JAVA算法:无向图的表示

JAVA算法:无向图的表示

下面是一个具有5个顶点的无向图的例子:

用JAVA代码来创建这个无向图

package com.bean.algorithm.graph;

import java.util.LinkedList;

public class UndirectedGraph {

	// 用户定义的无向图用连接表来表示 
    // 创建一个LinkedList类型的数据结构,Size 为无向图图的顶点数 
    public static class Graph 
    { 
        int V; 
        LinkedList<Integer> adjListArray[]; 
          
        // 构造方法
        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 -> 4

Adjacency list of vertex 1
head -> 0 -> 2 -> 3 -> 4

Adjacency list of vertex 2
head -> 1 -> 3

Adjacency list of vertex 3
head -> 1 -> 2 -> 4

Adjacency list of vertex 4
head -> 0 -> 1 -> 3
 

发布了619 篇原创文章 · 获赞 185 · 访问量 66万+

猜你喜欢

转载自blog.csdn.net/seagal890/article/details/104735939
今日推荐