import java.util.* ; class Stack1 { int[] data ;//保存数据 int size = 0 ;//栈中元素个数 int maxSize ;//栈的最大容量 int top = 0 ;//栈顶指针(栈顶元素索引+1) public Stack1(int maxSize) {//构造器 this.maxSize = maxSize ; this.data = new int[maxSize] ; } public void push(int val) {//压栈操作 if(this.size == this.maxSize) {//元素的个数已经达到栈的最大容量,不允许存储,报错 System.out.println("error") ; } else { data[top++] = val ;//在栈顶指针的位置增加新元素,栈顶指针更新+1 this.size++ ;//栈中元素个数更新+1 } } public void top() {//查看栈顶元素 if(this.size == 0) {//栈中没有元素,不允许查看,报错 System.out.println("error") ; } else { System.out.println(data[top-1]) ;//打印栈顶的元素(注意top永远指向栈顶元素的下一个,因此top-1为栈顶元素的位置) } } public void pop() {//弹栈操作 if(this.size == 0) {//栈中没有元素,不允许弹栈,报错 System.out.println("error") ; } else { System.out.println(data[--top]) ;//打印栈顶元素,top指针更新-1 this.size-- ;//栈中元素个数更新-1 } } } public class Main { public static void main(String...args) { Scanner scan = new Scanner(System.in) ; int n = Integer.parseInt(scan.nextLine()) ;//获取总的操作次数 Stack1 s = new Stack1(n) ;//因为压栈操作的次数一定小于总的操作次数,因此将栈的容量大小设置为 n 一定保险 while(scan.hasNextLine()) {//获取每一次操作 String str = scan.nextLine() ; String arr[] = str.split(" ") ; if(arr[0].equals("push")) { s.push(Integer.parseInt(arr[1])) ; } else if(arr[0].equals("pop")) { s.pop() ; } else { s.top() ; } } } }