?作者简介:一位喜欢写作,计科专业大二菜鸟
个人主页: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哦)
文章图片
如果文章有帮到你的话记得点赞+收藏支持一下哦
推荐阅读
- 牛客刷题集锦|『牛客|每日一题』 栈的压入、弹出序列
- 后端|分布式锁用 Redis 还是 Zookeeper(看完你就明白了)
- #|红黑树的学习
- 笔记|SpringBoot发送邮件(详细学习笔记)
- spring|springboot发送邮件工具类
- java|来杯JAVA
- java|Java Web 利用 session 实现简单的购物车(数量可以累加)
- php|用xampp搭建PHP运行环境(一)
- 基于时间戳的唯一标识符的轻量级跟踪方法