题解 | 没用stack库
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = 0; //获取到操作总数,来单独判断输入的第一行信息
int index = -1; // 定义一个指针,指向栈顶元素
ArrayList<Integer> list = new ArrayList<>();
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
if (num == 0) {num = in.nextInt();}
else {
String opr = in.nextLine(); // 第一行之后的所有操作
if (opr.contains("pop")) { // 没有定义新的class所以就简单用contains判断了
if(index == -1) {
System.out.println("error"); // 没有数据的情况
} else {
System.out.println(list.get(index)); // 输出栈顶元素,并删除之,指针跟随减少1
list.remove(index);
index--;
}
} else if (opr.contains("push")) {
index++;
String[] temp = opr.split(" "); // 简单用分割拿到后面的数字
list.add(index, Integer.parseInt(temp[1]));
} else if (opr.contains("top")) {
if(index == -1) {
System.out.println("error");
} else {
System.out.println(list.get(index));
}
} else {
}
}
}
}
}
没有用到自带的stack库,因为觉得本身就是理解栈的使用,直接用自带的栈库就没什么意义了。所以手搓了一下简易的栈。
查看7道真题和解析