前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >栈(stack)

栈(stack)

作者头像
桑鱼
发布2020-03-17 18:11:41
3270
发布2020-03-17 18:11:41
举报
文章被收录于专栏:学习笔记持续记录中...

栈是一个先入后出的有序列表,栈中的元素插入和删除只能在线性表的同一端进行。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底。所以最后放入的元素总是在栈顶,最后放入的元素也总是被最先删除

代码语言:javascript
复制
public class ArrayStackDemo {
    public static void main(String[] args) {
        ArrayStack stack = new ArrayStack(4);
        for(int i = 0;i < 5;i++){
            stack.push(i);
        }
        stack.list();
        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
    }
}

class ArrayStack{
    private int maxSize; // 栈的大小
    private int[] stack; // 使用数据表示栈

    private int top = -1; // 表示栈顶,栈顶是移动的,栈底是不变的

    public ArrayStack(int maxSize){
        this.maxSize = maxSize;
        stack = new int[maxSize]; // 初始化栈的大小(栈是用数组表示的)
    }

    /**
     * 判断栈满
     * @return
     */
    public boolean isFull(){
        return top == maxSize - 1;
    }

    /**
     * 判断栈空
     * @return
     */
    public boolean isEmpty(){
        return top == -1;
    }

    /**
     * 入栈
     * @param value
     */
    public void push(int value){
        if (isFull()){
            System.out.println("栈满");
            return;
        }
        top++;
        stack[top] = value;
    }

    /**
     * 出栈
     * @return
     */
    public int pop(){
        if(isEmpty()){
            throw new RuntimeException("栈空,没有数据~");
        }
        int value = stack[top];
        top--;
        return value;
    }

    /**
     * 遍历栈
     */
    public void list(){
        if(isEmpty()){
            System.out.println("栈空,没有数据");
            return;
        }
        for(int i = top; i>=0;i--){ // 需要从栈顶开始显示数据
            System.out.printf("stack[%d] = %d \n",i,stack[i]);
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档