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");
}
}
0102
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
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.