第五周作业—有向图邻接表表示及反向图构造
来源:互联网 发布:福州理工学院网络 编辑:程序博客网 时间:2024/06/10 16:41
1. 有向图中反向图构造。对tinyDG.txt(http://pan.baidu.com/s/1o6jWtcA)文件所表示的图,输出其邻接表表示 与 反向图的邻接表表示。类名:GraphReverse。
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileReader;
- import java.util.ArrayList;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Queue;
- import java.util.Scanner;
- public class GraphReverse {
- private int vertexNum;
- private int arcNum;
- private boolean visited[];
- private List<ArrayList<Integer>> graphListS;
- private List<ArrayList<Integer>> graphListF;
- public GraphReverse(int vertexNum,int arcNum,List<ArrayList<Integer>> graphListS,List<ArrayList<Integer>> graphListF){
- this.vertexNum=vertexNum;
- this.graphListS=graphListS;
- visited=new boolean[vertexNum];
- this.graphListF=graphListF;
- }
- public static void main(String[] args) {
- String path="src/tinyDG.txt";
- try{
- Scanner scanner=new Scanner(new File(path));
- List<ArrayList<Integer>> graphListS=new ArrayList<ArrayList<Integer>>();//存储有向图的邻接表
- List<ArrayList<Integer>> graphListF=new ArrayList<ArrayList<Integer>>();//存储有向图的反向图的邻接表
- int vertexNum=scanner.nextInt();
- int arcNum=scanner.nextInt();
- for(int i=0;i<vertexNum;i++){
- graphListS.add(new ArrayList<Integer>());
- graphListF.add(new ArrayList<Integer>());
- }
- //有向图的存储
- for(int i=0;i<arcNum;i++){
- int u=scanner.nextInt();
- int v=scanner.nextInt();
- if(!graphListS.get(u).contains(v)){
- graphListS.get(u).add(v);
- }
- //有向图的反向图存储
- if(!graphListF.get(v).contains(u)){
- graphListF.get(v).add(u);
- }
- }
- //有向图的广度优先遍历
- GraphReverse g1=new GraphReverse(vertexNum, arcNum, graphListS,null);
- System.out.println("有向图的邻接表的结果是:");
- g1.bfs(vertexNum/2+1,graphListS);
- //有向图的反向图广度优先的遍历
- GraphReverse g2=new GraphReverse(vertexNum, arcNum, null,graphListF);
- System.out.println("有向图的反向图的邻接表结果是:");
- g2.bfs(1,graphListF);
- }catch (Exception e) {
- e.printStackTrace();
- }
- }
- private void bfs(int v,List<ArrayList<Integer>> graphList){
- Queue<Integer> que = new LinkedList<Integer>();
- que.offer(v);
- while (!que.isEmpty()) {
- v = que.poll();
- System.out.print(v+":");
- visited[v] = true;
- for (int i = 0; i <graphList.get(v).size(); i++) {
- int k=graphList.get(v).get(i);
- System.out.print(k+" ");
- if (!visited[k]){
- //que.add(k);
- que.offer(k);
- visited[k] = true;
- }
- }
- System.out.println();
- }
- }
- }
0 0
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造(GraphReverse)
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——1有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- cmd 提示“不是内部或外部命令,也不是可运行的程序或批处理文件”
- cocos2d-x cpp 3.*相较于2.*的区别(整理)
- HTML5基础教程系列:第3部分,HTML5 API的威力
- C语言的谜题
- 浏览器不兼容
- 第五周作业—有向图邻接表表示及反向图构造
- UNREFERENCED_PARAMETER
- android的TableLayout布局界面元素填满整个屏幕
- python 发送Email程序
- Window Android 学习
- 数组的总结
- OpenCv矩阵操作函数大全 (1.0接口)
- python中的os模块
- Suricata之源代码(二)