public class DirectedCycle extends Object
DirectedCycle
class represents a data type for
determining whether a digraph has a directed cycle.
The hasCycle operation determines whether the digraph has
a simple directed cycle and, if so, the cycle operation
returns one.
This implementation uses depthfirst search. The constructor takes time proportional to V + E (in the worst case), where V is the number of vertices and E is the number of edges. Afterwards, the hasCycle operation takes constant time; the cycle operation takes time proportional to the length of the cycle.
See Topological
to compute a topological order if the
digraph is acyclic.
For additional documentation, see Section 4.2 of Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne.
Constructor and Description 

DirectedCycle(Digraph G)
Determines whether the digraph
G has a directed cycle and, if so,
finds such a cycle. 
Modifier and Type  Method and Description 

Iterable<Integer> 
cycle()
Returns a directed cycle if the digraph has a directed cycle, and
null otherwise. 
boolean 
hasCycle()
Does the digraph have a directed cycle?

static void 
main(String[] args)
Unit tests the
DirectedCycle data type. 
public DirectedCycle(Digraph G)
G
has a directed cycle and, if so,
finds such a cycle.G
 the digraphpublic boolean hasCycle()
true
if the digraph has a directed cycle, false
otherwisepublic Iterable<Integer> cycle()
null
otherwise.null
otherwisepublic static void main(String[] args)
DirectedCycle
data type.args
 the commandline arguments