// stack implemented using lists public class StackAsList implements SeqStructure { private SLL list; private int SP; public StackAsList() { list = new SLL(); } // Put: prepend o to list: public void put(Object o) { list.prepend(o); SP++; } // Get: remove o from head of list: public Object get() { if (isEmpty()) { System.out.println("Empty list!"); return null; } Object result = list.getHead().getItem(); // get head of list list.remove(result); // remove head of list SP--; // adjust SP return result; } // Look at top of stack, but no pop: public Object peek() { if (isEmpty()) return null; return list.getHead(); } // Empty? public boolean isEmpty() { return (SP==0); } // Size: public int size() { return SP; } // Stringify: public String toString() { return "LIFO: ["+list+"]"; } }