zoukankan      html  css  js  c++  java
  • 数组模拟栈数据结构

    什么是栈: 

           

      “栈又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素。

    栈的特点:

    • 1、栈的插入和删除只允许在线性表的一端进行
    • 2、“先进后出”,“后进先出”
    • 3、栈具有记忆功能
    • 4、” 栈顶通常用(Top)表示,栈底通常用(Bottom)表示。
    • 5、栈底指针不变,栈中元素随栈顶指针的变化而变化。
    • 6、栈支持子程序调用

    数组模拟栈分析:

    1       初始化栈

     

    2       栈满

     

    3       栈空

     

    4       入栈

     

    5       出栈

     

    6       打印栈

     完整代码:

    //测试代码自己实现就OK了
    /**
     * 定义一个栈
     */
    class ArrayStack{
        private Object[] stack;//栈[可以存储任何数据类型]
        private int index = -1;//栈帧
    
        /**
         * @param maxStack 栈中元素个数
         */
        public ArrayStack(int maxStack){
            stack = new Object[maxStack];
        }
    
        /**
         * 栈满
         */
        public boolean isFull(){
                return index >= stack.length-1;
        }
        /**
         * 栈空
         */
        public boolean isAir(){
            return index < 0;
        }
        /**
         * 入栈
         */
        public void push(Object value){
            //判断是否栈满
            if (isFull()) throw new RuntimeException("栈已满!无法添加数据!");
    
            index++;
            stack[index] = value;
            System.out.println("入栈成功:stack["+index+"] = "+stack[index]);
        }
        /**
         * 出栈
         */
        public void pop(){
            if (isAir()) throw new RuntimeException("栈已空!无法出栈");
    
            //Object objects = stack[index];//接收Top的数据
            System.out.println("出栈成功,出栈的数据是:"+stack[index]);
            index--;
        }
        /**
         * 显示栈的情况【遍历栈】
         */
        public void list(){
            if (isAir()){
                System.out.println("栈是空的,无法打印数据");
                return;
            }
            for (int i=index;i>=0;i--){
                System.out.println("stack["+i+"] = "+stack[i]);
            }
        }
    
    }
    View Code
  • 相关阅读:
    人人都有数字替身的时代马上到来
    教你如何在linux下查看服务是否已经启动或者关闭
    提前了解2019年物联网发展的六大趋势
    本科理工男如何学习Linux
    linux常见命令ps的应用
    useradd 命令的常见用法
    简单聊聊Linux学习经历
    什么是公网IP、内网IP和NAT转换?
    远程获得的有趣的linux命令
    js练习题之查找数组中的位子
  • 原文地址:https://www.cnblogs.com/zhangzhixi/p/13542087.html
Copyright © 2011-2022 走看看