• 栈(Stack)

    是一种特殊的线性表,只能在一端进行操作

    • 往栈中添加元素的操作,一般叫做push,入栈
    • 从栈中移除元素的操作,一般叫做pop,出栈(只能移除栈顶元素,也叫做:弹出栈顶元素)
    • 后进先出的原则,Last In First Out,LIFO

    • 注意:这里说的 “栈” 与内存中的 “栈空间” 是两个不同的概念

    栈(stack)接口设计

    int size;//元素的数量
    boolean isEmpty;//是否为空
    void push(E element);//入栈
    E pop();//出栈
    E top();//获取栈顶元素
    void clear();//清空
    

    栈的内部实现可以直接利用 动态数组,链表 数据结构来实现

    栈的实现

    使用组合的方式实现,不直接继承动态数组(ArrayList)

    /**
     * 栈的实现 - 使用动态数组实现
     * @param <E>
     */
    public class Stack<E>{
        // 使用 动态数组存储数组 初始化方法中创建列表
        private ArrayList<E> list = new ArrayList<>();
        //构造函数
        public Stack() {
            
        }
        /**
         * 元素的数量
         * @return
         */
        public int size(){
            // 栈中元素数量, 就是列表中存储的元素数量
            return list.size();
        }
        /**
         * 是否为空
         * @return
         */
        public boolean isEmpty(){
            // 栈是否空, 就是列表是否空
            return list.isEmpty();
        }
    
        /**
         * 清空栈元素
         */
        public void clear(){
            // 清空栈, 就是清空列表
            list.clear();
        }
    
        /**
         * 入栈
         * @param element
         */
        public void push(E element){
            // 入栈, 将元素添加到列表的最后面
            list.add(element);
        }
    
        /**
         * 出栈
         * @return
         */
        public E pop(){
            // 出栈, 将列表中最后一个元素删除并返回
            return list.remove(list.size() - 1);
        }
    
        /**
         * 获取栈顶元素
         * @return
         */
        public E top(){
            // 查看栈顶元素, 就是查看列表中的最后一个元素
            return list.get(list.size() - 1);
        }
    }
    

    栈的应用

    • 浏览器的前进和后退

    • 软件的撤销(Undo),恢复(Redo)功能

  • 相关阅读:
    【题解】SDOI2015序列统计
    【合集】有标号的DAG图计数(合集)
    【题解】有标号的DAG计数4
    【题解】有标号的DAG计数3
    【题解】有标号的DAG计数2
    【题解】有标号的DAG计数1
    【题解】歌唱王国(概率生成函数+KMP)+伦讲的求方差
    【题解】CTS2019珍珠(二项式反演+卷积)
    【题解】餐巾计划问题
    【题解】数字梯形问题
  • 原文地址:https://www.cnblogs.com/netu/p/14999195.html
Copyright © 2020-2023  润新知