给定一个初始为空的栈和一系列压栈、弹栈操作,请编写程序输出每次弹栈的元素。栈的元素值均为整数。 输入格式: 输入第1行为1个正整数n,表示操作个数;接下来n行,每行表示一个操作,格式为1 d或0。1 d表示将整数d压栈,0表示弹栈。n不超过20000。 输出格式: 按顺序输出每次弹栈的元素,每个元素一行。若某弹栈操作不合法(如在栈空时弹栈),则对该操作输出invalid。java实现
时间: 2023-11-04 19:29:58 浏览: 186
可以使用Java的Stack类来实现栈的功能,具体代码如下:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < n; i++) {
int op = scanner.nextInt();
if (op == 1) {
int d = scanner.nextInt();
stack.push(d);
} else {
if (!stack.isEmpty()) {
System.out.println(stack.pop());
} else {
System.out.println("invalid");
}
}
}
}
}
```
在主函数中,首先读入操作个数n,然后创建一个Stack<Integer>类型的栈对象。接着,对于每个操作,判断是压栈还是弹栈操作。如果是压栈操作,就将输入的整数d压入栈中;如果是弹栈操作,就先判断栈是否为空,如果不为空,则弹出栈顶元素并输出;如果栈为空,则输出invalid。
阅读全文