|

要实现上面定义的API,我们需要三个成员变量,v表示图中顶点的个数,e表示图总共边的数据,LinkedListQueue的数组用来存储顶点v的相邻节点;
构造函数会初始化空的邻接表数组
因为是无向图,所以addEdge方法在向图中添加边既要添加一条v->w的边,有需要添加一条w->v的边
-
public class Graph {
-
private final int v;
-
private int e;
-
private LinkedListQueue<Integer>[] adj;
-
-
public Graph(int v) {
-
this.v = v;
-
this.adj = (LinkedListQueue<Integer>[]) new LinkedListQueue[v];
-
for (int i = 0; i < v; i++) {
-
this.adj[i] = new LinkedListQueue<>();
-
}
-
}
-
-
public int V() {
-
return v;
-
}
-
-
public int E() {
-
return e;
-
}
-
-
public void addEdge(int v, int w) {
-
this.adj[v].enqueue(w);
-
this.adj[w].enqueue(v);
-
this.e++;
-
}
-
-
public Iterable<Integer> adj(int v) {
-
return this.adj[v];
-
}
-
-
@Override
-
public String toString() {
-
StringBuilder sb = new StringBuilder();
-
sb.append(v).append(" 个顶点,").append(e).append(" 条边n");
-
for (int i = 0; i < v; i++) {
-
sb.append(i).append(": ");
-
for (int j : this.adj[i]) {
-
sb.append(j).append(" ");
-
}
-
sb.append("n");
-
}
-
return sb.toString();
-
}
-
}
(编辑:我爱制作网_潮州站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|