package stack; import exceptions.EmpyStackException; import exceptions.FullStackException; /** * Created with MONSTER. * User: xgiovio * Date: 05/03/14 * Time: 0.12 */ public class DynamicArrayStack extends StackRules { public DynamicArrayStack(){ stack = (E[])new Object[dcapacity]; } public DynamicArrayStack(int size){ stack = (E[])new Object[size]; } @Override public void push(E element) throws FullStackException { if (isFull()){ E[] stack2 = (E[])new Object[(stack.length *2)]; for (int i = 0; i<= top; i++){ stack2[i] = stack[i]; } stack = stack2; stack[++top] = element; }else{ stack[++top] = element; } } @Override public E top() throws EmpyStackException { if (isEmpty()) throw new EmpyStackException(); return stack[top]; } @Override public E pop() throws EmpyStackException { if (isEmpty()) throw new EmpyStackException(); return stack[top--]; } @Override public boolean isEmpty() { if (size() < 1) return true; return false; } @Override // not used public boolean isFull() { return false; } @Override public int size() { return (++top); } private int top = -1; private int dcapacity = 100; private E[] stack; }