205. 模拟栈
时间限制:1000 MS 内存限制:64 MB
题目描述
# 模拟栈 ## 题目描述 实现一个栈,栈初始为空,支持以下四种操作: 1. `push x`:向栈顶插入一个整数 $x$。 2. `pop`:弹出栈顶元素。 3. `empty`:判断栈是否为空。若栈为空,输出 `YES`;否则,输出 `NO`。 4. `query`:查询并输出栈顶元素。 现在要依次执行 $M$ 个操作。对于每个 `empty` 和 `query` 操作,输出相应的结果。 保证所有操作合法,即执行 `pop` 和 `query` 操作时,栈一定非空。 ## 输入格式 从文件 `stack.in` 读入数据。 第一行包含一个整数 $M$,表示操作次数。 接下来 $M$ 行,每行包含一个操作命令,为 `push x`、`pop`、`empty` 或 `query` 中的一种。 ## 输出格式 将结果输出到文件 `stack.out`。 对于每个 `empty` 或 `query` 操作,按操作顺序输出一行结果: - 对于 `empty` 操作,若栈为空,输出 `YES`;否则,输出 `NO`。 - 对于 `query` 操作,输出一个整数,表示当前栈顶元素的值。 `push` 和 `pop` 操作不产生输出。 ## 数据范围 - $1 \le M \le 100000$。 - $1 \le x \le 10^9$。 - 栈初始为空。 - 保证所有操作合法,执行 `pop` 和 `query` 操作时栈非空。 ## 样例输入 ``` 10 push 5 query push 6 pop query pop empty push 4 query empty ``` ## 样例输出 ``` 5 5 YES 4 NO ``` ## 时间与空间限制 - 时间限制:$1000$ 毫秒。 - 空间限制:$64$ MB。