牛客刷题集锦|『牛客|每日一题』模板栈

?作者简介:一位喜欢写作,计科专业大二菜鸟
个人主页:starry陆离
首发日期:2022年7月13日星期三
上期文章:『首期文章』
订阅专栏:『牛客刷题集锦』
每日推荐:基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦)
牛客刷题集锦|『牛客|每日一题』模板栈
文章图片

如果文章有帮到你的话记得点赞+收藏支持一下哦
牛客刷题集锦|『牛客|每日一题』模板栈
文章图片


『牛客|每日一题』模板栈
  • 1.每日一题:AB1 【模板】栈
  • 2.测试示例
  • 3.Stack类实现
  • 4.数组实现栈

1.每日一题:AB1 【模板】栈 传送门:每日一题:AB1 【模板】栈
牛客刷题集锦|『牛客|每日一题』模板栈
文章图片

2.测试示例 【牛客刷题集锦|『牛客|每日一题』模板栈】输入:
6 push 1 pop top push 2 push 3 pop

输出:
1 error 3

3.Stack类实现 先来个简单的用Java自带的Stack类来实现,这样我们就只需要处理输入和判空即可
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); scanner.nextLine(); String string; Stack stack = new Stack(); while (n-- != 0) { string = scanner.nextLine(); String cmp = string.substring(0, 3); if (cmp.equals("pus")) { int a = Integer.valueOf(string.substring(5, string.length())); stack.push(a); } else if (cmp.equals("pop")) { if (!stack.isEmpty()) { System.out.println(stack.pop()); } else { System.out.println("error"); } } else if (cmp.equals("top")) { if (!stack.isEmpty()) { System.out.println(stack.peek()); } else { System.out.println("error"); } }} } }

4.数组实现栈 用自带的类写没挑战性???那就来自己写一个MyStack类用数组实现栈
import java.util.*; public class Main{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); scanner.nextLine(); String string; MyStack stack=new MyStack(n+1); while(n--!=0){ string=scanner.nextLine(); String cmp=string.substring(0,3); if(cmp.equals("pus")){ int a=Integer.valueOf(string.substring(5,6)); stack.push(a); }else if(cmp.equals("pop")){ stack.pop(); }else if(cmp.equals("top")){ stack.peek(); } } scanner.close(); } }class MyStack{ int[] data; //用数组实现栈 int maxSize; //栈的容量 int top=-1; //栈顶指针-栈中元素个数 //构造函数 public MyStack(int maxSize) { this.maxSize=maxSize; //预先指定栈大小 this.data=https://www.it610.com/article/new int[maxSize]; //初始化栈空间 } //入栈 public void push(int val) { if(this.top==this.maxSize) {//栈满-栈中的元素个数等于栈的容量 System.out.println("error"); }else { //栈没满,移动栈顶指针,加入新元素 data[++this.top]=val; } } //出栈操作 public void pop() { //栈空-栈中的元素为0 if(this.isEmpty()) { System.out.println("error"); }else { //栈不空,打印栈顶元素,栈顶指针下移 System.out.println(data[this.top--]); } } //打印栈顶元素 public void peek() { //栈空-栈中的元素为0 if(this.isEmpty()) { System.out.println("error"); }else { //栈不空,打印栈顶元素 System.out.println(data[this.top]); } } //栈的判空 public boolean isEmpty() { if(this.top==-1) { return true; }else { return false; } } }

牛客刷题集锦|『牛客|每日一题』模板栈
文章图片

每日推荐:基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦)
牛客刷题集锦|『牛客|每日一题』模板栈
文章图片

如果文章有帮到你的话记得点赞+收藏支持一下哦

    推荐阅读