import structure5.*; import java.util.Iterator; /* * An iterator that reverses the order of elements * returned from another iterator. */ class ReverseIterator extends AbstractIterator { protected AbstractIterator elems; /** * Create a new interator for the elements in reverse, * storing them in a SLL. */ public ReverseIterator(Iterator iter) { SinglyLinkedList list = new SinglyLinkedList(); while (iter.hasNext()) { list.addFirst(iter.next()); } elems = (AbstractIterator)list.iterator(); } // All other methods dispatch to the underlying iterator. public boolean hasNext() { return elems.hasNext(); } public void reset() { elems.reset(); } public E next() { return elems.next(); } public E get() { return elems.get(); } // Print the contents of an interator until empty public static void print(Iterator iter) { while (iter.hasNext()) { System.out.print(iter.next() + " "); } } public static void main(String args[]) { // put the args into a Vector Vector argVector = new Vector(); for (int i = 0; i < args.length; i++) { argVector.add(args[i]); } System.out.print("forward: "); print(argVector.iterator()); System.out.println(); System.out.print("reverse: "); print(new ReverseIterator(argVector.iterator())); System.out.println(); } }