0
点赞
收藏
分享

微信扫一扫

AcWing 828. 模拟栈 (Java)

夜空一星 2022-01-28 阅读 45

实现一个栈,栈初始为空,支持四种操作:

  1. push x – 向栈顶插入一个数 xx;
  2. pop – 从栈顶弹出一个数;
  3. empty – 判断栈是否为空;
  4. query – 查询栈顶元素。

现在要对栈进行 MM 个操作,其中的每个操作 33 和操作 44 都要输出相应的结果。

输入格式

第一行包含整数 MM,表示操作次数。

接下来 MM 行,每行包含一个操作命令,操作命令为 push xpopemptyquery 中的一种。

输出格式

对于每个 empty 和 query 操作都要输出一个查询结果,每个结果占一行。

其中,empty 操作的查询结果为 YES 或 NOquery 操作的查询结果为一个整数,表示栈顶元素的值。

数据范围

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");
                }
            }
        }

    }

}

 

举报

相关推荐

0 条评论