数组实现栈

数组实现栈

定义

1)栈是一个先进后出的有序列表,与堆正好相反
2)栈限制列表中新增或者删除元素只能从一侧进行操作,称之为栈顶
在这里插入图片描述

代码实现(代码内分析)

**
 * 数组实现栈
 * */
public class ArrayStack {
    //定义一个接收数据的数组
    private int [] stack;
    //最多能存储数据的个数
    private int maxSize;
    //定义一个栈顶
    private int top;
    /**
     * 初始化信息
     * */
    public ArrayStack(int max){
        this.maxSize = max;
        stack = new int[maxSize];
        top = -1;
    }
    /**
     * 判断是否为空栈
     * */
    public Boolean isEmply(){
        return top==-1;
    }
    /**
     * 判断是否空间已满
     * */
    public Boolean isFull(){
        //数组从0开始所以要-1
        return top == maxSize-1;
    }
    /**
     * 入栈
     * */
    public void addStack(int value){
        //判断空间是否已满
        if(isFull()){
            throw new RuntimeException("空间已满");
        }
        //初始值为-1
        top++;
        stack[top] = value;
    }
    /**
     * 出栈
     * */
    public void getStack(){
        if(isEmply()){
            throw new RuntimeException("队列为空");
        }
        System.out.println(stack[top]);
        top--;
    }
    /**
     * 遍历
     * */
    public void ergodic(){
        int topHelper = top;
        while(true){
            if(topHelper==-1){
                break;
            }
            System.out.println(stack[topHelper]);
            topHelper--;
        }
    }
}

测试

 public static void main(String[] args) {
        ArrayStack arrayStack = new ArrayStack(10);
        arrayStack.addStack(1);
        arrayStack.addStack(2);
        arrayStack.addStack(3);
        arrayStack.addStack(4);
        arrayStack.addStack(5);
        System.out.println("遍历------------------------------------------------");
        arrayStack.ergodic();
        System.out.println("----------------------------------------------------");
        arrayStack.getStack();
        arrayStack.getStack();
        arrayStack.getStack();
        arrayStack.getStack();
        arrayStack.getStack();
    }
```![在这里插入图片描述](https://img-blog.csdnimg.cn/20210324102051868.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc1MjM3OA==,size_16,color_FFFFFF,t_70)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值