数据结构Java版之邻接表实现图

Posted Ranter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构Java版之邻接表实现图相关的知识,希望对你有一定的参考价值。

  邻接表实现图,实际上是在一个数组里面存放链表,链表存放的是连接当前节点的其他节点。

  

package mygraph;

import java.util.ArrayList;
import java.util.List;

public class Table {
    private List<List<Character>> list;
    private List<Character> headNodes;
    private int n;
    private int nVerts;
    //出始化链表
    public Table() {
        super();
        this.list = new ArrayList<List<Character>>();
        this.headNodes = new ArrayList<Character>();
        list.add(new ArrayList<Character>());
        list.add(new ArrayList<Character>());
        list.add(new ArrayList<Character>());
        list.add(new ArrayList<Character>());
    }
        //添加一个节点
    public void addVertx(char x) {
        headNodes.add(x);
    }
        //添加一条边
    public void addEdge(int start, int end) {
        list.get(start).add(headNodes.get(end));
        list.get(end).add(headNodes.get(start));
    }
    
    //打印节点
    public  void printVertice() {
        for(List ls :list) {
            for(Object i : ls) {
                System.out.print(i + "	");
            }
            System.out.println();
        }
    }
    
}    

测试程序:

    public static void main(String[] args) {
        Table t = new Table();
        t.addVertx(‘a‘);        //0
        t.addVertx(‘b‘);        //1
        t.addVertx(‘c‘);        //2
        t.addVertx(‘d‘);        //3
        t.addEdge(0, 2);        
        t.addEdge(0, 1);
        t.printVertice();    //0- b c    //1- a    //2- a
    }

测试结果:

c    b    //a-c  a-b
a       //b-a
a       //c-a

 

以上是关于数据结构Java版之邻接表实现图的主要内容,如果未能解决你的问题,请参考以下文章

图的存储代码实现

求算法,用邻接矩阵和邻接表创建一个图,实现深度和广度搜索,菜单形式,c语言的代码。无向无权的图。

数据结构Java版之深度优先-图

数据结构—图邻接表存储基本运算算法图的遍历

图论——图的邻接表实现——Java语言(完整demo)

神秘的“图”--数据结构