第四周——图的表示

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 异常时,打印异常的堆栈信息,抛出此异常
    }  
      
}         
}  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值