顺序栈(SequenceStack)

//顺序栈
public class SequenceStack{

    Object[] stack; //对象数组(栈用数组来实现)
    final int defaultSize = 10; //默认最大长度
    int top; //栈顶位置(的一个下标):其实可以理解成栈的实际长度
    int maxSize; //最大长度

    //如果用无参构造的话,就设置默认长度
    public SequenceStack() {
        init(defaultSize);
    }

    //如果使用带参构造的话,就调用指定的最大长度
    public SequenceStack(int size) {
        init(size);
    }
    
    public void init(int size) {
        this.maxSize = size;
        top = 0;
        stack = new Object[size];
    }
    
    //获取栈顶元素
    public Object getTop() throws Exception {
        // TODO Auto-generated method stub
        if (isEmpty()) {
            throw new Exception("堆栈为空!");
        }
        return stack[top - 1];
    }

    //判断栈是否为空
    public boolean isEmpty() {
        return top == 0;
    }

    //出栈操作
    public Object pop() throws Exception {
        if (isEmpty()) {
            throw new Exception("堆栈为空!");
        }
        top--;
        return stack[top];
    }

    //入栈操作
    public void push(Object obj) throws Exception {
        //首先判断栈是否已满
        if (top == maxSize) {
            throw new Exception("堆栈已满!");
        }
        stack[top] = obj;
        top++;
    }
}

Last updated