//a LIFO sequence structure using arrays public class StackAsArray implements SeqStructure { private class SortedArray { public Object[] a; public int MAXSIZE; public SortedArray(int n) { a = new Object[n]; MAXSIZE = n; } } private SortedArray stack; // data in stack private int SP; // points to first empty cell // constructor: public StackAsArray(int size) { stack = new SortedArray(size); } // push element onto stack: public void put(Object o) { if (SP == stack.MAXSIZE) { System.out.println("Stack overflow"); return; } stack.a[SP] = o; // insert element SP++; // move SP "up" } // pop element from stack: public Object get() { if (SP == 0) { System.out.println("Attempt to pop empty stack"); return null; } Object temp = stack.a[--SP]; // move SP "down" then retrieve elem stack.a[SP] = null; // free space element was in return temp; } // size of stack is SP // Why? SP is 1 space higher than last element: public int size() { return SP; } // SP is at bottom: public boolean isEmpty() { return (SP == 0); } // Stingify Stack: public String toString() { String s = "LIFO: ["; for (int i = 0; i < SP; i++) { s += stack.a[i]; if (i < SP-1) s += ","; } s +="]"; return s; } }