// Alternative Q implemented using lists class QueueAsListAlt implements SeqStructure{ private ListNode first; private ListNode last; public QAsList() { } // put o at end of list public void put(Object o) { ListNode temp = new ListNode(o,null); if (isEmpty()){ // empty queue first = temp; last = temp; } else { // nonempty queue, so chain to last cell in queue last.setNext(temp); last = temp; } } // define the usual stack synonym for put public void enqueue(Object o) { put(o); } public Object get() { // remove and return first element of list l if (! isEmpty()){ Object v = first.getHead().getItem(); first = first.getNext(); return v; } else { System.out.println("Empty!"); return null; } } // define the usual stack synonym for get public Object dequeue() { return get(); } public boolean isEmpty() { // any elements in first?? return (first == null); } public int size() { int v = 0; ListNode finger = first; // this is called "walking down the list" while (finger != null) { v = v + 1; finger = finger.getNext();} return v; } public String toString() { if (isEmpty()) return "Empty Queue"; return "Queue elements from first to last:" + first; } } class TestQueueAsListAlt { public static void main(String[] args) { QAsList s = new QAsList(); s.enqueue("Hello"); s.enqueue("Dolly"); System.out.println(s); System.out.println(s.dequeue()); System.out.println(s.dequeue()); } }