import java.util.Iterator; /** Demo the use of Graph interfaces and Carl* implementations. @author Jed Yang, 2017-01-23 */ public class GraphDemo { private final UnweightedGraph g; /** n is the number of vertices. */ public GraphDemo(int n) { g = new CarlUnweightedGraph(true, n); g.addEdge(0, 1); g.addEdge(0, 2); g.addEdge(2, 1); g.addEdge(2, 0); } private void displayAdjacencyMatrix() { int n = g.numVerts(); //* System.out.print(" "); for (int j = 0; j < n; j++) { System.out.print(" " + j); } System.out.println(); System.out.print(" +"); for (int j = 0; j < n; j++) { System.out.print("--"); } System.out.println(); //*/ for (int i = 0; i < n; i++) { System.out.print("" + i + " | "); for (int j = 0; j < n; j++) { if (g.hasEdge(i, j)) { System.out.print(1); } else { System.out.print(0); } System.out.print(" "); } System.out.println(); } } private void displayStats() { int n = g.numVerts(); for (int i = 0; i < n; i++) { System.out.println("Vertex " + i + " has degree " + g.getDegree(i) + " and in-degree " + g.getInDegree(i)); //* System.out.print("neighbours:"); Iterable iterable = g.getNeighbors(i); Iterator iter = iterable.iterator(); while (iter.hasNext()) { System.out.print(" " + iter.next()); } //* System.out.println(); System.out.print("for-each loop:"); for (int v : g.getNeighbors(i)) { System.out.print(" " + v); } //*/ System.out.println("\n"); } } public void demo() { displayAdjacencyMatrix(); displayStats(); } public static void main(String[] args) { GraphDemo gd = new GraphDemo(4); gd.demo(); } }