깊이 우선 탐색 , 너비 우선 탐색 등에 쓰이는 그래프 클래스 입니다 [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);
}
}
'자료구조' 카테고리의 다른 글
[C#] 재귀 (Recursion) 의 단점을 보완한 꼬리 재귀 (Tail Recursion) (0) | 2023.10.14 |
---|