实现一个栈,栈初始为空,支持四种操作:
- push x– 向栈顶插入一个数 xx;
- pop– 从栈顶弹出一个数;
- empty– 判断栈是否为空;
- query– 查询栈顶元素。
现在要对栈进行 MM 个操作,其中的每个操作 33 和操作 44 都要输出相应的结果。
输入格式
第一行包含整数 MM,表示操作次数。
接下来 MM 行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。
输出格式
对于每个 empty 和 query 操作都要输出一个查询结果,每个结果占一行。
其中,empty 操作的查询结果为 YES 或 NO,query 操作的查询结果为一个整数,表示栈顶元素的值。
数据范围
1≤M≤1000001≤M≤100000,
 1≤x≤1091≤x≤109
 所有操作保证合法。
输入样例:
10
push 5
query
push 6
pop
query
pop
empty
push 4
query
empty
输出样例:
5
5
YES
4
NO代码:
import java.util.*;
public class Main{
    static int arr[] = new int[100010];
    static int tt = -1;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner reader = new Scanner(System.in);
        String a = reader.nextLine();
        //注意此时 如果用 reader.nextInt() 会少输入一行  因为输入数字的时候需要按下Enter ,所以需要用reader.nextLine();
        for (int i = 0; i < Integer.valueOf(a); i++) {
            String b = reader.nextLine();
            String item[] = b.split(" ");
            if (item[0].equals("push")) {
                arr[++tt] = Integer.valueOf(item[1]);
            } else if (item[0].equals("query")) {
                System.out.println(arr[tt]);
            } else if (item[0].equals("pop")) {
                if (tt != -1)
                //此时防止操作,此时是忽略的违规操作
                    tt--;
            } else if (item[0].equals("empty")) {
                if (tt == -1) {
                    System.out.println("YES");
                } else {
                    System.out.println("NO");
                }
            }
        }
    }
}










