本文共 1965 字,大约阅读时间需要 6 分钟。
下面是一个具有5个顶点的无向图的例子:
用JAVA代码来创建这个无向图
package com.bean.algorithm.graph;import java.util.LinkedList;public class UndirectedGraph { // 用户定义的无向图用连接表来表示 // 创建一个LinkedList类型的数据结构,Size 为无向图图的顶点数 public static class Graph { int V; LinkedListadjListArray[]; // 构造方法 Graph(int V) { this.V = V; // 定义LinkedList的Size为无向图的顶点数 adjListArray = new LinkedList[V]; // 为每条边创建一个LinkedList类型的数据结构 for(int i = 0; i < V ; i++){ adjListArray[i] = new LinkedList<>(); } } } // 为无向图添加边 static void addEdge(Graph graph, int src, int dest) { // 从 src 到 dest创建边 graph.adjListArray[src].add(dest); // 既然是无向图,从 dest 到 src 也添加边 graph.adjListArray[dest].add(src); } // 输出无向图 static void printGraph(Graph graph) { for(int v = 0; v < graph.V; v++) { System.out.println("Adjacency list of vertex "+ v); System.out.print("head"); for(Integer pCrawl: graph.adjListArray[v]){ System.out.print(" -> "+pCrawl); } System.out.println("\n"); } } // 测试方法 public static void main(String args[]) { // 按照给定的无向图进行初始化 int V = 5; Graph graph = new Graph(V); addEdge(graph, 0, 1); addEdge(graph, 0, 4); addEdge(graph, 1, 2); addEdge(graph, 1, 3); addEdge(graph, 1, 4); addEdge(graph, 2, 3); addEdge(graph, 3, 4); // 按照邻接表的形式输出图 printGraph(graph); } }
输出结果
Adjacency list of vertex 0
head -> 1 -> 4Adjacency list of vertex 1
head -> 0 -> 2 -> 3 -> 4Adjacency list of vertex 2
head -> 1 -> 3Adjacency list of vertex 3
head -> 1 -> 2 -> 4Adjacency list of vertex 4
head -> 0 -> 1 -> 3转载地址:http://vsvdi.baihongyu.com/