// file FIFOQueue.java // FIFO Queue implemented as singly linked list with pointers to begin // and end class Node { protected T value; protected Node next; } public class FIFOQueue { private Node first; private Node last; public boolean empty() { return (first == null); } public void add(T x) { Node n = new Node(); n.value = x; if (empty()) first = n; else last.next = n; last = n; } public T pop() { if (empty()) { System.out.println("Cannot pop empty queue"); return null; } T x = first.value; first = first.next; return x; } public String toString() { String s = "["; Node n = first; while (n != null) { s = s + n.value.toString() + " "; n = n.next; } return s + "]"; } public static void main(String[] args) { FIFOQueue q = new FIFOQueue(); q.add(4); q.add(14); q.add(23); q.pop(); q.add(28); q.add(34); q.pop(); System.out.println(q.toString()); } }