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)功能

  • 相关阅读:
    New Skateboard
    1127
    一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
    vim 快捷键绑定
    使用git 上传项目到gitee/github
    Linux进程/线程调度策略与 进程优先级
    【框架】共享内存组设计思路与实现(更新中)
    linux下六大IPC机制【转】
    详解Linux内核红黑树算法的实现
    Linux 内核里的数据结构:红黑树(rb-tree)
  • 原文地址:https://www.cnblogs.com/netu/p/14999195.html
Copyright © 2011-2022 走看看