1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| public class ArrayStack implements Stack{ private static final int DEFAULT_CAPACITY=1024; private int top_position=-1; private Object[] stack; private int capacity;
public ArrayStack() { this(DEFAULT_CAPACITY); }
public ArrayStack(int capacity) { this.capacity = capacity; stack=new Object[capacity]; }
@Override public int getSize() { return top_position+1; }
@Override public void push(Object o) { if(getSize()<capacity){ stack[++top_position]=o; }else { throw new StackOverFlowException("栈溢出"); } }
@Override public Object pop() { if(!isEmpty()){ Object element=stack[top_position]; stack[top_position--]=null; return element; }else { throw new StackEmptyException("空栈"); } }
@Override public boolean isEmpty() { return top_position<0; }
@Override public Object top() { if(!isEmpty()){ return stack[top_position]; }else { throw new StackEmptyException("空栈"); } } }
|