본문 바로가기

자료구조

[자료구조] Graph

깊이 우선 탐색 , 너비 우선 탐색 등에 쓰이는 그래프 클래스 입니다  [JAVA]

 

 

import java.util.LinkedList;

public class Graph {

    private int V;
    private int E;

    private LinkedList<Integer>[] list;

    public Graph(int V)
    {
        list = new LinkedList[V];

        this.V = V;
        this.E = 0;

        for(int i = 0 ; i < V ; i++)
        	list[i] = new LinkedList<>();
    }


    public Graph(Graph G)
    {
        this(G.V);

        for(int v = 0 ; v < this.V ; v++)
        	for(int w : G.adj(v))
        		this.addEdge(v, w);

    }

    public int V()
    {
    	return V;
    }

    public int E()
    {
    	return E;
    }

    public void addEdge(int v, int w)
    {
        list[v].add(w);
        list[w].add(v);
        E++;
    }


    public Iterable<Integer> adj(int v)
    {
    	return list[v];
    }


    public static void main(String args[])
    {
        Graph e = new Graph(7);

        e.addEdge(0, 1);
        e.addEdge(0, 2);
        e.addEdge(1, 3);
        e.addEdge(2, 3);
        e.addEdge(3, 4);

        e.addEdge(4, 5);
        e.addEdge(4, 6);
        e.addEdge(5, 6);
    }
}