您的位置:首页 > 其它

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

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

邻接表表示示例如下:

0:1 5

1:

2:0 3

……



package suanfa;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.StringTokenizer;
public class GraphReverse {
private static int vertex;
private static int edge;

private static int[][] getNum(){
int [][] matrix = null;
try{
BufferedReader reader = new BufferedReader (new FileReader(new File("src/tinyDG.txt")));
vertex = Integer.valueOf(reader.readLine().trim());
edge = Integer.valueOf(reader.readLine().trim());
matrix = new int[edge][2];

String temp = "";
int count = 0;
while((temp = reader.readLine()) != null) {
int index = 0;
StringTokenizer str = new StringTokenizer(temp);

while (str.hasMoreElements()) {
matrix[count][index] = Integer.valueOf(str.nextToken());
index++;
}
count++;
}
}catch(Exception e){
e.printStackTrace();
}
return matrix;
}

private static void getSortedList(int[][] data, int num) {
String str = "";
int begin=0, end=0;

if (num == 0) {
str = "有序表的邻接表:";
begin = 0;
end = 1;
} else if (num == 1) {
str = "反向图的邻接表:";
begin = 1;
end = 0;
}

System.out.println(str);

for (int i=0; i<vertex; i++) {
System.out.print(i + ": ");
for (int j=0; j<data.length; j++) {
if (data[j][begin] == i) {
System.out.print("\t" + data[j][end]);
}
}
System.out.println("");
}
}

public static void main(String[] args) {
getSortedList(getNum(), 0);
getSortedList(getNum(), 1);
}
}


运行结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: