题目
给定一个初始为空的栈和一系列压栈、弹栈操作,请编写程序输出每次弹栈的元素。栈的元素值均为整数。
输入格式:
输入第1行为1个正整数n,表示操作个数;接下来n行,每行表示一个操作,格式为1 d或0。1 d表示将整数d压栈,0表示弹栈。n不超过20000。
输出格式:
按顺序输出每次弹栈的元素,每个元素一行。若某弹栈操作不合法(如在栈空时弹栈),则对该操作输出invalid。
代码展示
package com.lwtstu5.practice;
import java.util.Stack;
import java.util.Scanner;
public class demo10 {
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++) {
String operation = scanner.next();
int value = 0;
if (operation.equals("1")) {
// 压栈操作
value = scanner.nextInt();
stack.push(value);
} else if (operation.equals("0")) {
// 弹栈操作
if (!stack.isEmpty()) {
System.out.println(stack.pop());
} else {
System.out.println("invalid");
}
}
}
scanner.close();//关闭文件,可以不加
}
}
测试结果