package stack; import exceptions.EmpyStackException; import exceptions.FullStackException; import stack.utility.SinglePointerNode; /** * Created with MONSTER. * User: xgiovio * Date: 05/03/14 * Time: 0.12 */ public class SinglePointerStack extends StackRules { @Override public void push(E element) throws FullStackException { SinglePointerNode temp = new SinglePointerNode(element,stack); stack = temp; ++number_of_elements; } @Override public E top() throws EmpyStackException { if (isEmpty()) throw new EmpyStackException(); return stack.getElement(); } @Override public E pop() throws EmpyStackException { SinglePointerNode to_return; if (isEmpty()) { throw new EmpyStackException(); }else{ to_return = stack; stack = stack.getNext(); return to_return.getElement(); } } @Override public boolean isEmpty() { if (size() < 1) return true; return false; } @Override // not used public boolean isFull() { return false; } @Override public int size() { return number_of_elements; } private SinglePointerNode stack = null; private int number_of_elements = 0; }