/**
* void enqueue(Item item)
* Item dequeue()
* int size()
* boolean isEmpty()
*/
public class LinkedListQueue<Item> {
private Node first; // link to least recently added node
private Node last; // link to most recently added node
private int N; // number of items on the queue
public void enqueue(Item item) {
Node oldLast = last;
last = new Node();
last.item = item;
last.next = null; // unnecessary
if (isEmpty()) {
first = last; // only 1 node
} else {
oldLast.next = last;
}
N++;
}
public Item dequeue() {
Item item = first.item;
first = first.next;
N--;
if (isEmpty()) {
last = null; // no more node
}
return item;
}
public int size() {
return N;
}
public boolean isEmpty() {
return first == null;
}
private class Node {
Item item;
Node next;
}
}