package 算法;

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

public class GraphBiao {
    //
    private List<List<Integer>> adjList;
    //列表套列表
    private int vertices;
    public GraphBiao(int vertices){
        this.vertices=vertices;
        this.adjList=new ArrayList<>();
        for(int i=0;i<=vertices;i++){
            adjList.add(new ArrayList<>());
        }//为每个点设一个邻接表
    }
    public void addEdge(int v1,int v2){
        adjList.get(v1).add(v2);
        adjList.get(v2).add(v1);
        //因为adj每个元素是一个列表,所有后面还有一个点
    }//拆解每个点的意思?
    public void dfs(int starVertex){
        boolean[] visited=new boolean[vertices+1];
        System.out.println("遍历结果是:");
        dfsUtil(starVertex,visited);
        System.out.println();
    }
    public void dfsUtil(int vertex,boolean[] visited){
        visited[vertex]=true;
        //遍历当前顶点的所有邻居
        for(int neighbor:adjList.get(vertex)){
            if(!visited[neighbor]){
                dfsUtil(neighbor,visited);
            }
        }

    }
    public void printAdjlist(){
        System.out.println("邻接表");
        for(int i=1;i<=vertices;i++){
            System.out.println("顶点"+i+"的邻居"+adjList.get(i));
        }
    }


    public static void main(String[] args) {
        GraphBiao g=new GraphBiao(6);
        g.addEdge(1,2);
        g.addEdge(1,5);
        g.addEdge(2,3);
        g.addEdge(2,4);
        g.addEdge(3,6);
        g.addEdge(4,5);
        g.addEdge(4,6);
        g.printAdjlist();
        g.dfs(1);
        List<String> names=new ArrayList<>();
        names.add("Alice");
        names.add("ton");
        System.out.println(names.get(1));
    }
}
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐