zoukankan      html  css  js  c++  java
  • 栈(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)功能

  • 相关阅读:
    Nginx
    Nginx & AWStats 安装、配置、使用
    Nginx
    linux
    工作中的 Vim 和 git
    后端
    django
    django
    awk流程控制
    linux系统内置函数
  • 原文地址:https://www.cnblogs.com/netu/p/14999195.html
Copyright © 2011-2022 走看看