#145. 数据结构-stack栈

数据结构-stack栈

知识点

栈(Stack)是一种基于 后进先出(LIFO) 原则的数据结构,它是一种线性表。栈具有两个主要操作:压入 (Push) 和弹出 (Pop)。

STL栈的用法

#include<stack>
stack<int> stk;  // 创建int类型栈,名字为stk
stk.push(x)      // 把x压栈
stk.pop()        // 弹出栈顶元素
stk.top()        // 查看栈顶元素
stk.size()       // 返回栈内元素个数
stk.empty()      // 返回栈是否为空

题目描述:

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

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

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

输入格式:

第一行包含整数 M,表示操作次数。 接下来 M 行,每行包含一个操作命令,操作命令为 push xpopemptyquery 中的一种。

输出格式:

对于每个 emptyquery 操作都要输出一个查询结果,每个结果占一行。 其中,empty 操作的查询结果为 YESNOquery 操作的查询结果为一个整数,表示栈顶元素的值。

输入样例:

10
push 5
query
push 6
pop
query
pop
empty
push 4
query
empty

输出样例:

5
5
YES
4
NO

提示:

数据范围 1M1000001≤M≤100000 1x1091≤x≤10^9