您的位置:首页 > 其它

第四周作业---图的表示

2014-04-02 20:28 357 查看
package homework;
/*
* 1. 图的表示:给定图数据文件(tinyG.txt),
* 计算得到图的邻接矩阵,并把邻接矩阵保存到
* 文件(tinyG_matrix.txt)中。
* 类名:GraphRepresentation。
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

public class GraphRepresentation {
static String PathtinyG="src/tinyG.txt";
static String PathtinyGm="src/tinyG_matrix.txt";
static int arc[][];//存放边的数组
static int vertexNum;//顶点数目
static int arcNum;//边的数目
static int vartex[];//存放顶点的数组
public static void main(String []args){
try{
//读取文件
File TinyGfile=new File(PathtinyG);
InputStreamReader ISReader=new InputStreamReader(new FileInputStream(TinyGfile));
BufferedReader BFReader=new BufferedReader(ISReader);
PrintWriter PWriter=new PrintWriter(new File(PathtinyGm));//新建文件并写入
//List<Integer> list=new ArrayList<Integer>();
String line="";
int num=1;//从第一行开始读取
while((line=BFReader.readLine())!=null){
//把第一个数定义为顶点数
if(num==1){
vertexNum=Integer.parseInt(line.trim());
num++;
continue;
/*
* break 跳出语句块 执行下面的语句
*continue 跳出当前循环 不执行循环中continue下面的所有语句
*开始下一次循环
*/
}
//把第二个数定义为边数
else if(num==2){
arcNum=Integer.parseInt(line.trim());
num++;
continue;
}
//构造出邻接矩阵的二维数组的大小
else if(num==3){
arc=new int [vertexNum][arcNum];
num++;
continue;
}
addEdge(line);
num++;
}
//输出矩阵并写入文件
for(int i=0;i<vertexNum;i++){
for(int j=0;j<vertexNum;j++){
PWriter.print(arc[i][j]+"  ");//此处输出到文件中
System.out.print(arc[i][j]+"  ");
}
//强行输出
PWriter.flush();
PWriter.println();
System.out.println();
}
}
catch(Exception e){
e.printStackTrace();
}
}
//构造邻接矩阵的方法
public static void addEdge(String line){
String[] resault=line.trim().split(" ");
System.out.println(line);
int v1=Integer.parseInt(resault[0]);
int v2=Integer.parseInt(resault[1]);
for(int i=0;i<arcNum;i++){
arc[v1][v2]=1;
arc[v2][v1]=1;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: