标签:rip port arc 抽象 部分 desc style asp sea
此篇文章为实现《算法》一书中提到的大部分无向图算法,分为多篇,
即多个Java文件,可以直接复制,便于学习;
第一篇,java无向图的抽象类实现,此篇主要列出实现的功能,接口;
参考链接:https://www.cnblogs.com/xiaohuiduan/p/11352209.html#e5b9bfe5baa6e4bc98e58588e9818de58e86_6
/**
* FileName: Graph
* Author: Jerry
* Date: 2020/2/10 19:20
* Description: 图的抽象数据结构
*/
package graph;
import java.util.ArrayList;
import java.util.List;
public abstract class Graph {
//顶点数量
int V;
//边的数量
int E;
//邻接表
List[] adj;
//构造一个含有V个顶点的图,但是不含边
Graph(int V) {
adj = new ArrayList[V];
for (int i = 0; i < V; i++) {
adj[i] = new ArrayList<Integer>();
}
this.V = V;
}
/**
* @return 返回顶点的数量
*/
int V() {
return V;
}
/**
* @return 返回边的数量
*/
int E() {
return E;
}
/**
* 在图中添加一条边v-w
*
* @param v
* @param w
*/
abstract void addEdge(int v, int w);
/**
* 获得与v相邻的所有顶点
*
* @param v
* @return
*/
abstract Iterable<Integer> adj(int v);
/**
* 与结点s相连接的所有结点
*
* @param s
* @return
*/
abstract Iterable<Integer> search(int s);
/**
* 是否存在s结点到v结点的路径
*
* @param s
* @param v
* @return
*/
abstract boolean hasPathTo(int s, int v);
/**
* 找到s到v的路径
*
* @param s
* @param v
* @return
*/
abstract Iterable<Integer> pathTo(int s, int v);
/**
* @return
* 便于进行打印
*/
@Override
public String toString() {
String s = "Graph{" +
"V=" + V + ",E="
+ E + "}";
for (int v = 0; v < V; v++) {
s += (v + ":");
for (int w : this.adj(v)) {
s += w + " ";
}
s += ‘\n‘;
}
return s;
}
}
标签:rip port arc 抽象 部分 desc style asp sea
原文地址:https://www.cnblogs.com/AccompanyingLight/p/12294024.html