public class Queue { ListItem front; ListItem back; Queue() { front = back = null; } public void enqueue(Object x) { if (isEmpty()) front = back = new ListItem(x,null); else { back.next = new ListItem(x,null); back = back.next; } } public Object dequeue() { if (isEmpty()) return null; else { Object first = front.item; front = front.next; if (front == null) back = null; return first; } } public Object peek() { if (isEmpty()) return null; else return front.item; } public boolean isEmpty() { return (front == null); } public String toString() { if (isEmpty()) return "empty queue"; else return "queue (front to back): " + front; } }