基于自定义动态数组实现栈

1.栈也是一种线性结构,对应的操作是动态数组操作的子集
2.只能从一端添加元素,也只能从同一端取出元素(称为栈顶)【后进先出】
应用:undo操作(撤销)比如eclipse的ctrl+z

括号匹配等等

栈的实现(基于自定义动态数组实现的栈):
首先创建一个Stack<T>接口 来声明要用到的方法:

public interface Stack<T> {
    void push(T t);
    T pop();
    T peek();
    int getSize();
    boolean isEmpty();
}

实现栈:

public class ArrayStack<T>  implements Stack<T>{
    Array<T> array;
    public ArrayStack(int capacity){
        array = new Array<T>(capacity);
    }//构造方法与Array类似
    public ArrayStack(){
        array = new Array<T>();
    }
    //添加一个元素
        public void push(T t) {
            array.addLast(t);
        }
    //    取出元素
        public T pop() {
            return array.removeLast();
        }
        public T peek() {
            return array.getLast();
        }
    public int getSize() {
        return array.getSize();
    }
    public boolean isEmpty() {
        return array.isEempty();
    }
    public int getCapacity() {
        return array.getCapacity();
    }
    
    //打印测试用:
    public String toString() {
        StringBuilder res = new StringBuilder();
        res.append("Stack: ");
        res.append("[");
        for(int i = 0;i<array.getSize();i++) {
            res.append(array.get(i));
            if(i!=array.getSize()-1) {
                res.append(", ");
            }    
        }
        res.append("] top(栈顶)");
        return res.toString();
    }
}

 

posted @ 2020-03-13 22:40  ziggystardust  阅读(126)  评论(0)    收藏  举报