无向图(2.无向图的实现类)
Posted accompanyinglight
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无向图(2.无向图的实现类)相关的知识,希望对你有一定的参考价值。
此篇文章为实现《算法》一书中提到的大部分无向图算法,分为多篇,
即多个Java文件,可以直接复制,便于学习;
第二篇,java无向图的类实现,此篇主要列出实现的方法,需要参考其他类中方法(后续实现);
参考链接:https://www.cnblogs.com/xiaohuiduan/p/11352209.html#e5b9bfe5baa6e4bc98e58588e9818de58e86_6
/** * FileName: UndirGraph * Author: Jerry * Date: 2020/2/10 19:48 * Description: 无向图的数据结构 */ package graph; import java.util.ArrayList; import java.util.List; public class UndirGraph extends Graph { /** * 继承父类的构造函数 * @param V */ public UndirGraph(int V) { super(V); } /** * 在图中添加一条边v-w * @param v * @param w */ @Override void addEdge(int v, int w) { adj[v].add(w); adj[w].add(v); this.E++; } /** * 获得与v相邻的所有顶点 * @param v * @return */ @Override Iterable<Integer> adj(int v) { return adj[v]; } /** * 获得与s相连通的所有顶点 * @param s * @return */ @Override Iterable<Integer> search(int s) { DepthFirstSearch dfs = new DepthFirstSearch(this, s); List list = new ArrayList<Integer>(); for (int i = 0; i < this.V(); i++) { if (dfs.getMarked(i)) { list.add(i); } } return list; } /** * 是否存在s结点到v结点的路径 * @param s * @param v * @return */ @Override boolean hasPathTo(int s, int v) { DepthFirstSearchPath dfsPath = new DepthFirstSearchPath(this,s); return dfsPath.hasPathTo(v); } /** * 找出s到v的路径 * @param s * @param v * @return */ @Override Iterable<Integer> pathTo(int s, int v) { DepthFirstSearchPath dfsPath = new DepthFirstSearchPath(this,s); return dfsPath.pathTo(v); } }
以上是关于无向图(2.无向图的实现类)的主要内容,如果未能解决你的问题,请参考以下文章