有向图中反向图构造。对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);
}
}
运行结果: