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

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;
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值