美文网首页
数据结构入门——大师:stack(一) ArrayStack

数据结构入门——大师:stack(一) ArrayStack

作者: Kino_7abb | 来源:发表于2019-01-28 22:34 被阅读0次

    1.什么是栈

    栈是一种后进先出的数据结构,也称LIFO,我们这里就用之前的Array类来实现一个底层是数组的栈

    2.先定义一个接口,定义栈有哪些操作

    public interface Stack<E> {
        /**
         * 获取栈内元素
         * @return 元素
         */
        int getSize();
    
        /**
         * 判断栈是否为空
         * @return
         */
        boolean isEmpty();
    
        /**
         * 压栈
         * @param e 要压入的元素
         */
        void push(E e);
    
        /**
         * 弹栈
         * @return 弹出栈的元素
         */
        E pop();
    
        /**
         * 查看栈顶元素
         * @return
         */
        E peek();
    }
    

    压栈 就是栈进入元素,弹栈也就是出栈

    3.我们开始实现这些操作

    /**
         * 这里底层是一个数组
         */
        private ArrayE<E> array;
    
        /**
         * 这里的栈的容量就是数组的容量
         * @param capacity 容量
         */
        public ArrayStack(int capacity){
            array = new ArrayE<E>(capacity);
        }
    
        public ArrayStack(){
            array = new ArrayE<E>();
        }
    
        @Override
        public int getSize() {
            return array.getSize();
        }
    
        @Override
        public boolean isEmpty() {
            return array.isEmpty();
        }
    

    这里是一些初始化的操作

    /**
         * 压栈也就是在数组尾部添加元素
         * @param e 要压入的元素
         */
        @Override
        public void push(E e) {
            array.addLast(e);
        }
    
    
        /**
         * 弹栈,由于是后进先出的数据结构,因此我们将末尾的元素移除出去,
         * 因为最先进来的肯定是末尾的元素
         * @return 出栈的元素
         */
    
        @Override
        public E pop() {
            //因为压入的元素在array的末尾,而stack必须是后进先出,因此应该移除最后一个
            return array.removeLast();
        }
    
        /**
         * 查看栈顶元素
         * @return 我们只要看数组的末尾元素即可
         */
        @Override
        public E peek() {
            return array.getLast();
        }
    
        @Override
        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();
        }
    

    以上就是其核心的进栈出栈的操作

    相关文章

      网友评论

          本文标题:数据结构入门——大师:stack(一) ArrayStack

          本文链接:https://www.haomeiwen.com/subject/wjozjqtx.html