Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

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

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[] 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 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 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

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Databases DeMYSTiFieD

Authors: Andy Oppel

2nd Edition

0071747990, 978-0071747998

More Books

Students also viewed these Databases questions