Question: JAVA: Complete the class. Please let me know if you need any other files 01 02 03 04 05 06 07 08 09 10 11
JAVA: Complete the class. Please let me know if you need any other files
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package algs42; public class MyDegrees { // TODO: complete the methods // The constructor may take time proportional to V+E // The other methods should all take constant time public MyDegrees(Digraph G) { } // indegree of v public int indegree(int v) { return 0; } // outdegree of v public int outdegree(int v) { return 0; } // sources public Iterable
|
this is the digraph class:
package algs42; import stdlib.*; import algs13.Bag;
/** * The Digraph class represents an directed graph of vertices * named 0 through V-1. * It supports the following operations: add an edge to the graph, * iterate over all of the neighbors incident to a vertex. * Parallel edges and self-loops are permitted. *
* For additional documentation, * see Section 5.2 of * Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne. */ public class Digraph { private final int V; private int E; private final Bag
/** * Create an empty digraph with V vertices. */ @SuppressWarnings("unchecked") public Digraph(int V) { if (V < 0) throw new IllegalArgumentException("Number of vertices in a Digraph must be nonnegative"); this.V = V; this.E = 0; adj = new Bag[V]; for (int v = 0; v < V; v++) { adj[v] = new Bag<>(); } }
/** * Return the number of vertices in the digraph. */ public int V() { return V; }
/** * Return the number of edges in the digraph. */ public int E() { return E; }
/** * Add the directed edge v->w to the digraph. * @throws java.lang.IndexOutOfBoundsException unless both 0 <= v < V and 0 <= w < V */ public void addEdge(int v, int w) { if (v < 0 || v >= V) throw new IndexOutOfBoundsException("vertex " + v + " is not between 0 and " + (V-1)); if (w < 0 || w >= V) throw new IndexOutOfBoundsException("vertex " + w + " is not between 0 and " + (V-1)); adj[v].add(w); E++; }
/** * Return the list of vertices pointed to from vertex v as an Iterable. * @throws java.lang.IndexOutOfBoundsException unless 0 <= v < V */ public Iterable
/** * Return the reverse of the digraph. */ public Digraph reverse() { Digraph R = new Digraph(V); for (int v = 0; v < V; v++) { for (int w : adj(v)) { R.addEdge(w, v); } } return R; }
/** * Return a string representation of the digraph. */ public String toString() { StringBuilder s = new StringBuilder(); String NEWLINE = System.getProperty("line.separator"); s.append(V + " vertices, " + E + " edges " + NEWLINE); for (int v = 0; v < V; v++) { s.append(String.format("%d: ", v)); for (int w : adj[v]) { s.append(String.format("%d ", w)); } s.append(NEWLINE); } return s.toString(); }
/** * Save a graphviz representation of the graph. * See graphviz.org. */ public void toGraphviz(String filename) { GraphvizBuilder gb = new GraphvizBuilder (); for (int v = 0; v < V; v++) { gb.addNode (v); for (int w : adj[v]) gb.addEdge (v, w); } gb.toFile (filename); }
/** * Test client. */ public static void main(String[] args) { //args = new String[] { "data/mediumDG.txt" }; args = new String[] { "data/tinyDG.txt" }; //args = new String[] { "data/tinyDGeuler1.txt" }; //args = new String[] { "data/tinyDGeuler2.txt" }; //args = new String[] { "data/tinyDGeuler3.txt" }; //args = new String[] { "data/tinyDGeuler4.txt" }; //args = new String[] { "data/tinyDGeuler5.txt" }; //args = new String[] { "data/tinyDGeuler6.txt" }; //args = new String[] { "data/tinyDGex2.txt" }; //args = new String [] { "10", "20" };
Digraph G; if (args.length == 1) { In in = new In(args[0]); G = DigraphGenerator.fromIn(in); } else { int V = Integer.parseInt (args[0]); int E = Integer.parseInt (args[1]); G = DigraphGenerator.simple(V, E); } StdOut.println(G); G.toGraphviz ("g.png"); }
}
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
