栈(Stack)
是一种遵循后进先出(Last In First Out,LIFO)原则的数据结构。它具有以下基本操作:
1. Push:将一个元素添加到栈顶。
2. Pop:移除栈顶元素,并返回它。
3. Peek/Top:查看栈顶元素,但不移除它。
4. IsEmpty:检查栈是否为空。
5. Size:返回栈中元素的数量。
栈的特点
最后加入的元素会最先被移除,这就像一堆盘子,你总是先拿走最上面的盘子,而要放盘子时,也是放在最上面。
栈的实现
可以用数组或链表来实现。在数组实现中,通常使用一个指针(或索引)来跟踪栈顶的位置。在链表实现中,栈顶是链表的头节点。
AC代码
#include <iostream>
using namespace std;
const int N = 100010;
int m;
int stk[N], tt;//skt数组存储栈,tt是栈点下标
int main()
{
cin >> m;
while (m -- )
{
string op;
int x;
cin >> op;
if (op == "push")
{
cin >> x;
stk[ ++ tt] = x;//插入
}
else if (op == "pop") tt -- ;//弹出
else if (op == "empty") cout << (tt ? "NO" : "YES") << endl;
else cout << stk[tt] << endl;//stk[tt] 是栈顶
}
return 0;
}