增量操作的栈 day03zenl

leetcode1381

在这里插入图片描述
这道题总的来说比较简单,就是实现栈这个数据结构,那么先复习一下什么叫栈

栈只允许新的内容从一个方向插入或删除,这个方向我们叫栈顶,而从其他位置获取内容是不被允许的

栈最显著的特征就是LIFO(Last In, First Out - 后进先出)
在这里插入图片描述
常用操作

  1. 进栈 - push - 将元素放置到栈顶
  2. 退栈 - pop - 将栈顶元素弹出
  3. 栈顶 - top - 得到栈顶元素的值
  4. 是否空栈 - isEmpty - 判断栈内是否有元素

代码实现

定义一个指针rear,用来表示栈尾的数组下表 使用数组模拟栈
rear<maxsizi-1,表示栈未满,可以加元素,否则不做任何处理
我是用数组模拟栈,用链表来模拟大家也可以试着实现一下

class CustomStack {
    private int maxsize;//栈的大小
    private int[] stack;
    private int rear = -1;//栈尾指针,开始指向-1

    public CustomStack(int maxSize) {
        maxsize = maxSize;
        stack = new int[maxsize];//模拟栈
    }


    public void push(int x) {
        if (rear < maxsize - 1) {//栈未满,先把指针+1,再往里添加新元素
            rear++;
            stack[rear] = x;
        }
    }

    public int pop() {
        if (rear < 0) return -1;//判断是否为空
        int popnum = stack[rear];//不为空,先定义一个中间变量存当前值,指针往前移动一位
        rear--;
        return popnum;//返回中间变量
    }

    public void increment(int k, int val) { //判断k和栈当前大小的关系
        if (k > stack.length) {
            for (int i = 0; i < stack.length; i++) {
                stack[i] += val;
            }
        } else {
            for (int i = 0; i <= k-1; i++) {
                stack[i] += val;
            }
        }
    }

    @Override
    public String toString() { //便于调试重写的toString方法
        return "CustomStack{" +
                "maxsize=" + maxsize +
                ", stack=" + Arrays.toString(stack) +
                ", rear=" + rear +
                '}';
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值