package stack; import exceptions.EmptyStackException; /** * Created with MONSTER. * User: xgiovio * Date: 05/03/14 * Time: 0.12 */ //Copyright (c) 2003 Brown University, Providence, RI //Additional modifications and methods by xgiovio public class ArrayStack implements Stack { public ArrayStack(){ stack = (E[])new Object[dcapacity]; } public ArrayStack(int size){ stack = (E[])new Object[size]; } @Override public void push(E element) { if (stack.length == (top + 1)){ E[] stack2 = (E[])new Object[(stack.length *2)]; for (int i = 0; i<= top; i++){ stack2[i] = stack[i]; } stack = stack2; top++; stack[top] = element; }else{ top++; stack[top] = element; } } @Override public E top() throws EmptyStackException { if (isEmpty()) throw new EmptyStackException(); return stack[top]; } @Override public E pop() throws EmptyStackException { if (isEmpty()) throw new EmptyStackException(); top--; return stack[top + 1]; } @Override public boolean isEmpty() { if (size() < 1) return true; return false; } @Override public int size() { return (top + 1); } @Override public String toString() { String to_return = ""; to_return = to_return + "["; for (int i = 0;i<=top;i++){ if ( i == top){ to_return+=(stack[i].toString()); }else{ to_return+=(stack[i].toString() + ","); } } to_return = to_return + "]"; return to_return; } private int top = -1; private int dcapacity = 100; private E[] stack; }