一.图的表示

1.顶点的表示:使用整数0~V-1来表示。即使顶点是字母表示的,也可以利用符号表转换为顶点名字和整数一一对应的关系。

2.图的表示方法:实际中最常用的一种是邻接表数组(Adjaxency-list )

(1)使用数组表示以每一个顶点为索引的列表

(2)数组中的元素表示与该顶点邻接的顶点所构成的集合(这里使用ArrayList/bag来承载邻接元素)

4.1 无向图

3.代码实现

package com.cx.graph;

import edu.princeton.cs.algs4.Bag;

//无向图的表示
public class Graph {
    private final int V;
    //邻接表数组,里面的每个元素都是一个集合类
    private Bag<Integer>[] adj;
    
    //初始化V个顶点的图
    public Graph(int V) {
        this.V=V;
        adj=(Bag<Integer>[])new Bag[V];
        //将每个元素初始化,不然会为null
        for(int v=0;v<V;v++) {
            adj[v]=new Bag<Integer>();
        }
    }

    public void addEdge(int v,int w) {
        adj[v].add(w);
        adj[w].add(v);
    }
    //顶点v的邻接元素集合
    public Iterable<Integer> adj(int v){
        return adj[v];
    }
    //点的度数
    public static int degree(Graph G,int v) {
        int degree=0;
        for(int w:G.adj(v)) degree++;
        return degree;
    }
    public int V() {return V;}
    
}
View Code

相关文章:

  • 2021-06-13
  • 2022-12-23
  • 2021-05-16
  • 2021-07-18
  • 2022-12-23
  • 2022-12-23
  • 2021-10-19
  • 2021-12-27
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-18
  • 2022-12-23
  • 2021-05-27
  • 2021-06-28
  • 2021-06-15
相关资源
相似解决方案