有向图的实现
来源:互联网 发布:网络电视有哪些功能 编辑:程序博客网 时间:2024/05/01 17:20
public class DirectedGraph { private int vertex;//顶点 private int edge;//边 private LinkedList<Integer>[] adj;//邻接表 /** * 内部创建 * @param v 顶点 */ @SuppressWarnings("unchecked") public DirectedGraph(int v){ this.vertex = v; edge = 0; adj = new LinkedList[v]; for(int i=0;i<v;i++){ adj[i] = new LinkedList<>(); } } /** * 通过加载文件创建 * @param file * @throws IOException */ @SuppressWarnings("unchecked") public DirectedGraph(File file) throws IOException{ FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); int vertex = Integer.parseInt(br.readLine());//读取顶点数 this.vertex = vertex;//读取顶点数 //创建有顶点数的邻接表 adj = new LinkedList[vertex]; for(int i=0;i<vertex;i++){ adj[i] = new LinkedList<>(); } int edge = Integer.parseInt(br.readLine());//读取边 for(int i=0;i<edge;i++){ //获取顶点对 String[] vertexs = br.readLine().split(" "); int v = Integer.parseInt(vertexs[0]); int m = Integer.parseInt(vertexs[1]); //将顶点对添加成一条边 addEdge(v, m); } if(br!= null){ br.close(); } } /** * 添加 一条双向边 * @param v * @param m */ public void addEdge(int v,int m){ adj[v].add(m); //边数+1 edge++; } /** * 获取顶点数 * @return */ public int vertexNum(){ return vertex; } /** * 边数 * @return */ public int edgeNum(){ return edge; } /** * 返回临界链表迭代器 * @param v * @return */ public Iterable<Integer> adj(int v){ return adj[v]; } /** * 有向图取反 * @return */ public DirectedGraph reverser(){ DirectedGraph directedGraph = new DirectedGraph(vertex); for(int v = 0;v<vertex;v++){ for(int w:adj(v)){ directedGraph.addEdge(w, v); } } return directedGraph; }}
阅读全文
0 0
- 有向图的实现
- 有向图的邻接表实现
- 有向图的C++实现
- 邻接矩阵实现的有向图
- 邻接矩阵(有向图,无向图实现的差异)
- 有向图邻接矩阵实现
- 有向图的DFS和BFS算法实现
- 图论(2-1) 有向图的实现
- 有向加权图的邻接表实现
- 有向图的Dijkstra算法实现模板
- 有向图的拓扑排序算法JAVA实现
- 邻接链表实现的有向图
- 有向图的DFS和BFS(邻接矩阵实现)
- 有向图找环的Python实现
- 有向网的各种功能实现
- 有向图找环的python实现
- 有向无环图的动态规划实现
- Dijkstra算法python的实现(有向图/无向图)
- 2017年8月30日 机房模拟赛题解
- # VSCode 编辑器
- java中Map<String,Double>map按照value降序排列 Map<String,Double>map=new TreeMap<String,Double>(); map.put("
- Springmvc中提交from之后不跳转不进控制器
- 从矛盾中解决市场
- 有向图的实现
- 每日英语阅读(四十四)
- 怎么下载小程序二维码-微信小程序开发-视频教程4
- 指针运算
- Linux开启启动Docker
- Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]【解决方案】
- UVA
- 指针相减的意义
- 小程序名称可以和公众号同名-微信小程序开发-视频教程5