Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

JAVA: Complete the class. Please let me know if you need any other files this is

ID: 3724680 • Letter: J

Question

JAVA: Complete the class. Please let me know if you need any other files

this is the digraph class:

package algs42;
import stdlib.*;
import algs13.Bag;

/**
* The <tt>Digraph</tt> 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.
* <p>
* For additional documentation,
* see <a href="http://algs4.cs.princeton.edu/52directed">Section 5.2</a> of
* <i>Algorithms, 4th Edition</i> by Robert Sedgewick and Kevin Wayne.
*/
public class Digraph {
   private final int V;
   private int E;
   private final Bag<Integer>[] adj;

   /**
   * 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<Integer> adj(int v) {
       if (v < 0 || v >= V) throw new IndexOutOfBoundsException();
       return adj[v];
   }

   /**
   * 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 <a href="http://www.graphviz.org/">graphviz.org</a>.
   */
   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");
   }

}

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<Integer> sources() { return null; }      // sinks    public Iterable<Integer> sinks() { return null; }      // is G a map?    public boolean isMap() { return false; }  }  

Explanation / Answer

else

return adj.get(v); }

else