. . . . . . | | +---+ a[2]: | | +---+ a[1]: | Y | top_elt_index: 1 +---+ bottom: a[0]: | X | +---+
public class StackO implements Stack_Interface { private Object[] stackArray; private int top_elt_index; public StackO(int s) { stackArray = new Object[s]; top_elt_index = -1; } public boolean isEmpty() { return top_elt_index == -1; } . . . . . . | | +---+ a[2]: | | +---+ a[1]: | Y | top_elt_index: 1 +---+ a[0]: | X | +---+ public void push(Object o) { stackArray[ ++ top_elt_index ] = o; } . . . . . . | | +---+ a[2]: | Z | top_elt_index: 2 +---+ a[1]: | Y | +---+ a[0]: | X | +---+ public Object peek() { return stackArray[top_elt_index]; } public Object pop() { return stackArray[top_elt_index--]; } . . . . . . | | +---+ a[2]: | | +---+ a[1]: | Y | top_elt_index: 1 +---+ a[0]: | X | +---+ . . . }
public class StackO implements Stack_Interface { public StackO(int s) { stackArray = new Object[s]; top_elt_index = -1; } // O(s) i.e. O(N) public boolean isEmpty() { return top_elt_index == -1; } // O(1) public Object peek() { return stackArray[top_elt_index]; } // O(1) public Object pop() { return stackArray[top_elt_index--]; } // O(1) public push(Object o) { stackArray[ ++ top_elt_index ] = o; } // O(1) }