作者简介:一位喜欢写作,计科专业大二菜鸟
个人主页:starry陆离
首发日期:2022年7月13日星期三
上期文章:『首期文章』
订阅专栏:『牛客刷题集锦』
每日推荐:基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦)
如果文章有帮到你的话记得点赞+收藏支持一下哦
输入:
6
push 1
pop
top
push 2
push 3
pop
输出:
1
error
3
先来个简单的用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<Integer> stack = new Stack<Integer>();
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");
}
}
}
}
}
用自带的类写没挑战性???那就来自己写一个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=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哦)
如果文章有帮到你的话记得点赞+收藏支持一下哦