That is precisely the reason you need to break things up into multiple classes and methods. We introduced SearchItems to get you to think about what exactly has to be placed on the stack. A second reason to use SearchItems is that they allow the algorithm to be generalizable to other types of searches. Such a modification is not so easy if the original code did not separate out the logical parts of the code using multiple classes and methods. This makes printing the data very easy along with searching the data.
Printing is easy with an enumeration.
I don't see how it is used as enumerate uses an Enumeration. The Vector reachable in Reachable.java is to be used to maintain the list of reachable vertices as they are found. See the enumNeighbours method in class Vertex, or the documentation on java.util.Vector available from JWS help, for a method to construct an Enumeration from a Vector. As for specifying the vertex for onCycle, you can either pass a String naming the vertex to onCycle, or pass a Vertex. This overrides the previous message below saying that onCycle must have only a Vertex as a parameter.