① 首先我们会定义一个 Graph ADT 接口,这个接口是实现和测试图算法的出发点。
Graph的构造函数有两个参数,一个是顶点个数,一个是边是否有向的布尔值,在这默认为无向。
Graph的构造函数有两个参数,一个是顶点个数,一个是边是否有向的布尔值,在这默认为无向。
还有一些用于处理图的ADT操作,包括创建和撤销图,报告顶点数和边数以及增加和删除边。
class Graph {
Graph(int, boolean)
int number_V()
int number_E()
boolean directed()
int insert(Edge)
void remove(Edge)
boolean edge(int, int)
Adjlist getAdjList(int)
}
这里使用了一个简单的Edge数据类型将顶点对封装为边。
class Edge {
int v, w;
Edge(int v, int w) {
this.v = v;
this.w = w;
}
}
② 另外,Graph接口还指定了我们可以用来对图进行检查的基本机制:用于处理与任意给定顶点邻接的顶点的迭代器AdjList。
interface AdjList {
int beg();
int nxt();
boolean end();
}
③ 因为我们是通过邻接矩阵表示,所以会有一个二维数组,然后AdjList接口就变成了: