import edu.princeton.cs.introcs.StdOut; import java.util.Iterator; public class Queue implements Iterable { private Node first; private Node last; private int N; private class Node { Item item; Node next; } public boolean isEmpty() {return first==null;} public int size() {return N;} public void enqueue(Item item) { // last.next = new Node(); // last = last.next; // last.item = item; // N++; Node oldlast = last; last = new Node(); last.item = item; last.next = null; if(isEmpty()) first = last; else oldlast.next = last; N++; } public Item dequeue() { Item item = first.item; first = first.next; if(isEmpty()) last = null; N--; return item; } public Iterator iterator() { return new ReverseArrayIterator(); } private class ReverseArrayIterator implements Iterator { int i = 0; Node nextnode = first; @Override public boolean hasNext() { return i q = new Queue(); q.enqueue(1); q.enqueue(2); q.enqueue(5); for(int i:q) StdOut.println(i); } }