/** * A Quack of objects * * This implementation uses linked memory * * @version 1.0 * @author Prof. David Bernstein, James Madison University */ public class Quack { private Node first, last; /** * Construct a new (empty) Quack */ public Quack() { first = null; last = null; } /** * Pep an Object off of this Quack * * @return The Object */ public Object pep() { Node temp; Object value; value = null; if (first != null) { value = first.value; if (first == last) { first = null; } else { temp = last; while (temp.next != first) { temp = temp.next; } first = temp; first.next = null; } } if (first == null) last = null; return value; } /** * Pip an Object off of this Quack * * @return The Object */ public Object pip() { Object value; if (last != null) { value = last.value; last = last.next; } else { value = null; } if (last == null) first = null; return value; } /** * Push an Object onto this Quack * * @param anObject The Object to push */ public void push(Object anObject) { Node temp; temp = new Node(); temp.value = anObject; temp.next = last; last = temp; if (first == null) first = last; } }