第四周作业---图的表示
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; } } }