1. 图的表示:给定图数据文件(tinyG.txt),计算得到图的邻接矩阵,并把邻接矩阵保存到文件(tinyG_matrix.txt)中。类名:GraphRepresentation。摘自《Algorithms, 4th Edition》P522。博文标题:第四周作业——图的表示
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class GraphRepresentation {
public static void main(String[] args) {
try {
FileReader in = new FileReader("F:\\tinyG.txt"); //字符类的读取,读取文件tinyG.txt
BufferedReader re = new BufferedReader(in); //从文件中读入字符数据并置入缓冲区
int tchar;
String str = " ";
str =re.readLine();// 取得屏幕输入数据
int x = Integer.parseInt(str); //把str转换成整数的形式
str = re.readLine();
int[][] m = new int[x][x];
str = "";
int a = 0, b = 0;
while ((tchar = re.read()) >= 0)
{
str = str + (char) tchar;
if ((char) tchar == ' ')
{
a = Integer.parseInt(str.trim());//消除前后空格后的字符串值,再把str转换成整数的形式
str = " ";
}
if ((char) tchar == '\n')
{
b = Integer.parseInt(str.trim());
m[a][b] = 1;
m[b][a] = 1;
str = " ";
}
}
re.close();
in.close();
FileOutputStream fos = new FileOutputStream("F:/tinyG_matrix.txt");
OutputStreamWriter br = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(br);
//这里同样的用BufferedWriter封装起来,就是为了可以使用它的writer(String )方法
str=" ";
System.out.println("计算得到图的邻接矩阵为 : ");
for (int i = 0; i < x; i++)
{
for (int j = 0; j < x; j++)
{
System.out.print(m[i][j]+" ");
str=str+Integer.toString(m[i][j]);
if(j==x-1){
System.out.println();
bw.write(str);
bw.newLine();
str="";
}
}
}
bw.close();
br.close();
}
catch (NumberFormatException e)
{
e.printStackTrace();//打印异常的堆栈信息,指明错误原因
}
catch (FileNotFoundException e)
{
e.printStackTrace(); //找不到文件,打印异常的堆栈信息,指明错误原因,
}
catch (IOException e)
{
e.printStackTrace(); //当发生某种 I/O 异常时,打印异常的堆栈信息,抛出此异常
}
}
}