题解 | #【模板】栈#

【模板】栈

http://www.nowcoder.com/practice/104ce248c2f04cfb986b92d0548cccbf

import java.util.* ;
class Stack1 {
    int[] data ;//保存数据
    int size = 0 ;//栈中元素个数
    int maxSize ;//栈的最大容量
    int top = 0 ;//栈顶指针(栈顶元素索引+1)
    public Stack1(int maxSize) {//构造器
                this.maxSize = maxSize ;
        this.data = new int[maxSize] ;
    }
    public void push(int val) {//压栈操作
        if(this.size == this.maxSize) {//元素的个数已经达到栈的最大容量,不允许存储,报错
            System.out.println("error") ;
        } else {
            data[top++] = val ;//在栈顶指针的位置增加新元素,栈顶指针更新+1
            this.size++ ;//栈中元素个数更新+1
        }
    }
    public void top() {//查看栈顶元素
        if(this.size == 0) {//栈中没有元素,不允许查看,报错
            System.out.println("error") ;
        } else {
            System.out.println(data[top-1]) ;//打印栈顶的元素(注意top永远指向栈顶元素的下一个,因此top-1为栈顶元素的位置)
        }
    }
    public void pop() {//弹栈操作
        if(this.size == 0) {//栈中没有元素,不允许弹栈,报错             
                        System.out.println("error") ;
        } else {
            System.out.println(data[--top]) ;//打印栈顶元素,top指针更新-1              
            this.size-- ;//栈中元素个数更新-1
        }
    }
}
public class Main {
    public static void main(String...args) {
        Scanner scan = new Scanner(System.in) ;
        int n = Integer.parseInt(scan.nextLine()) ;//获取总的操作次数
        Stack1 s = new Stack1(n) ;//因为压栈操作的次数一定小于总的操作次数,因此将栈的容量大小设置为 n 一定保险
        while(scan.hasNextLine()) {//获取每一次操作
            String str = scan.nextLine() ;
            String arr[] = str.split(" ") ;
            if(arr[0].equals("push")) {
                s.push(Integer.parseInt(arr[1])) ;
            } else if(arr[0].equals("pop")) {
                s.pop() ;
            } else {
                s.top() ;
            }
        }
    }
} 

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论
注释一下可否😭
1 回复 分享
发布于 2022-05-03 10:55
top是不是可以直接用size替换,不用维护
点赞 回复 分享
发布于 2022-04-21 18:33
菜鸟有个问题,为什么不直接调用栈的api, 重新写一个栈类?
点赞 回复 分享
发布于 2022-05-31 12:37
这个程序 如果我输入pash会怎样呢,明显是一个错误输入 但是会执行top语句吧? 还是我理解有误?
点赞 回复 分享
发布于 2022-08-02 08:37
其实while判断条件改为“n-->0”更准确
点赞 回复 分享
发布于 2022-10-09 16:59 北京

相关推荐

美团 后端开发 总包n(15%是股票)
点赞 评论 收藏
分享
AFBUFYGRFHJLP:直接去美帝试试看全奖phd吧
点赞 评论 收藏
分享
把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
评论
59
17
分享
牛客网
牛客企业服务