package com.qiangqiang.graph;
import sun.misc.Queue;
public class Graph {
//图
//顶点数目
private final int V;
//边的数目
private int E;
//邻接表
private Queue<Integer>[] adj;
public Graph(int v) {
//初始化顶点数量
this.V = v;
//初始化边的数量
this.E = 0;
//初始化连接表
this.adj = new Queue[V];
for (int i = 0; i < adj.length; i++) {
adj[i] = new Queue<Integer>();
}
}
//获取顶点数目
public int V() {
return this.V;
}
//获取边的数目
public int E() {
return this.E;
}
//向图中添加一条边v-w
public void addEdge(int v, int w) {
//无向图中边是没有方向的,所以边既可以是v-w的边,也可以是w-v的边,因此需要w出现在v的邻接表中,并且v也要出现在w的邻接表中
adj[v].enqueue(w);
adj[w].enqueue(v);
//边+1
E++;
}
//获取和顶点v相邻的所有顶点
public Queue<Integer> adj(int v) {
return adj[v];
}
}
数据结构之模拟无向图
最新推荐文章于 2022-03-11 21:36:14 发布