加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_潮州站长网 (http://www.0768zz.com/)- 物联安全、建站、操作系统、云计算、数据迁移!
当前位置: 首页 > 大数据 > 正文

无向图API的体现

发布时间:2021-05-15 14:58:13 所属栏目:大数据 来源:互联网
导读:要实现上面定义的API,我们需要三个成员变量,v表示图中顶点的个数,e表示图总共边的数据,LinkedListQueue的数组用来存储顶点v的相邻节点; 构造函数会初始化空的邻接表数组 因为是无向图,所以addEdge方法在向图中添加边既要添加一条v-w的边,有需要添加一


要实现上面定义的API,我们需要三个成员变量,v表示图中顶点的个数,e表示图总共边的数据,LinkedListQueue的数组用来存储顶点v的相邻节点;

构造函数会初始化空的邻接表数组

因为是无向图,所以addEdge方法在向图中添加边既要添加一条v->w的边,有需要添加一条w->v的边


  1. public class Graph { 
  2.     private final int v; 
  3.     private int e; 
  4.     private LinkedListQueue<Integer>[] adj; 
  5.  
  6.     public Graph(int v) { 
  7.         this.v = v; 
  8.         this.adj = (LinkedListQueue<Integer>[]) new LinkedListQueue[v]; 
  9.         for (int i = 0; i < v; i++) { 
  10.             this.adj[i] = new LinkedListQueue<>(); 
  11.         } 
  12.     } 
  13.  
  14.     public int V() { 
  15.         return v; 
  16.     } 
  17.  
  18.     public int E() { 
  19.         return e; 
  20.     } 
  21.  
  22.     public void addEdge(int v, int w) { 
  23.         this.adj[v].enqueue(w); 
  24.         this.adj[w].enqueue(v); 
  25.         this.e++; 
  26.     } 
  27.  
  28.     public Iterable<Integer> adj(int v) { 
  29.         return this.adj[v]; 
  30.     } 
  31.  
  32.     @Override 
  33.     public String toString() { 
  34.         StringBuilder sb = new StringBuilder(); 
  35.         sb.append(v).append(" 个顶点,").append(e).append(" 条边n"); 
  36.         for (int i = 0; i < v; i++) { 
  37.             sb.append(i).append(": "); 
  38.             for (int j : this.adj[i]) { 
  39.                 sb.append(j).append(" "); 
  40.             } 
  41.             sb.append("n"); 
  42.         } 
  43.         return sb.toString(); 
  44.     } 

(编辑:我爱制作网_潮州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读