import java.util.*; class Vertex { String name; LinkedList adjList ; public Vertex(String s) { name = s; adjList = new LinkedList(); } } class Edge { Vertex vert; public Edge(Vertex v) { vert = v; } } public class UndGraph { Hashtable h; public UndGraph() { h = new Hashtable(); } public void addVertex(String s) { Vertex v = new Vertex(s); h.put(s,v); } public void addEdge(String s1, String s2) { Vertex u = h.get(s1); Vertex v = h.get(s2); if ( (u != null) && (v !=null) ) { u.adjList.add(new Edge(v)); v.adjList.add(new Edge(u)); } } public void printGraph() { Collection vertexList = h.values(); for(Vertex v: vertexList) { System.out.print(v.name + " :"); for(Edge e: v.adjList) System.out.print(" " + e.vert.name); System.out.println(" "); } } public static void main(String argv []) { UndGraph g = new UndGraph(); g.addVertex("A"); g.addVertex("B"); g.addVertex("C"); g.addVertex("D"); g.addVertex("E"); g.addVertex("F"); g.addVertex("G"); g.addEdge("A","B"); g.addEdge("B","C"); g.addEdge("C","D"); g.addEdge("D","A"); g.addEdge("C","G"); g.addEdge("D","E"); g.addEdge("D","F"); g.addEdge("E","F"); g.printGraph(); } }