第五周作业——有向图邻接表表示及反向图构造

1. 有向图中反向图构造。对tinyDG.txt(http://pan.baidu.com/s/1o6jWtcA)文件所表示的图,输出其邻接表表示 与 反向图的邻接表表示。类名GraphReverse博文标题:第五周作业——有向图邻接表表示及反向图构造

邻接表表示示例如下:

0:1 5

1:

2:0 3

……


这道题我的想法是先构造出有向图的一个二维数组,通过此数组来输出邻接表

package homework;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Scanner;

public class GraphReverse {
	static String PathDG="src/tinyDG.txt";
	static int vertexNum;//顶点数目
	static int arcNum;//边的数目
	static int arc1[][];//存放第一个有向图的边的数组
	static int arc2[][];//存放反向图的边的数组
	public static void main(String args[]){
		try{
			File DGfile=new File(PathDG);
		    Scanner scanner=new Scanner(DGfile);
		    vertexNum=scanner.nextInt();
		    arcNum=scanner.nextInt();
		    arc1=new int[vertexNum][vertexNum];
		    arc2=new int[vertexNum][vertexNum];
		    for(int i=0;i<arcNum;i++){
		    	int v1=scanner.nextInt();
		    	int v2=scanner.nextInt();
		    	int v3=v2;
		    	int v4=v1;
		    	addEdge(v1, v2);
		    	addEdge1(v3, v4);
			}
		    
		    System.out.println("有向图邻接表:");
			for(int i=0;i<vertexNum;i++){
				System.out.print(i+":");
				for(int j=0;j<vertexNum;j++){
					//System.out.print(arc[i][j]+" ");
					if(arc1[i][j]==1){
					System.out.print(j+" ");
					}
				}
				System.out.println(" ");
			}
			System.out.println("反向图邻接表:");
			for(int i=0;i<vertexNum;i++){
				System.out.print(i+":");
				for(int j=0;j<vertexNum;j++){
					//System.out.print(arc[i][j]+" ");
					if(arc2[i][j]==1){
					System.out.print(j+" ");
					}
				}
				System.out.println(" ");
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public static void addEdge(int v1,int v2){
		 arc1[v1][v2]=1;
	}
	public static void addEdge1(int v1,int v2){
		 arc2[v1][v2]=1;
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值