/* File: ArrayStack.java - April 2015 */ package l12; /** * Stack implementation backed by an array. * * @author Michael Albert * */ public class ArrayStack implements Stack241 { public static final int DEFAULT_CAPACITY = 10; private T[] stack; private int count; // Create an empty stack @SuppressWarnings("unchecked") public ArrayStack() { this.stack = (T[]) new Object[DEFAULT_CAPACITY]; count = 0; } public void push(T element) { if (count >= stack.length) { stack = java.util.Arrays.copyOf(stack, 2*stack.length); } stack[count] = element; // Deal with size issue later count++; } public T pop() { if (this.isEmpty()) { throw new StackException("Pop from empty stack"); } count--; return stack[count]; } public T peek() { if (this.isEmpty()) { throw new StackException("Peek on empty stack"); } return stack[count-1]; } public boolean isEmpty() { return count <= 0; } public int size() { return count; } public String toString() { return "Stack(" + count + "): " + java.util.Arrays.toString(stack); } }