概述
栈是C++中很常用的一种STL,本节课蒟蒻君将带领大家学习栈。
栈是哈?
- 栈是一种操作受限制的线性表,只允许从前端插入,前端删除。
- 我们管栈的前端叫栈顶,后端叫栈底。
- 插入元素叫入栈,删除元素叫出栈。
- 我们可以把栈想象成交作业,并且只能放在一堆作业本的最上面,发作业的时候从上往下发。也就是说先交作业的人会后收到作业,后交作业的人会先收到作业。
栈其实差不多就是这样:
这东东咋用?
函数名 | 功能 | 参数类型 | 返回值类型 |
---|---|---|---|
push | 将一个元素入栈 | 和栈类型相同 | 无 |
pop | 弹出栈顶 | 无 | 无 |
top | 栈顶是什么 | 无 | 和栈类型相同 |
empty | 栈是否为空 | 无 | bool |
size | 栈中有都少个元素 | 无 | size_t(当int用就行了) |
使用实例
#include <bits/stdc++.h>
using namespace std;
stack<int> s; // 定义一个int类型的栈s
int main() {
s.push(1); // 1入栈
cout << s.empty() << '\n'; // 输出栈是否为空
s.push(2); // 2入栈
cout << s.top() << '\n'; // 输出栈顶元素
s.pop(); // 弹出栈顶元素
cout << s.size() << '\n'; // 输出栈中有多少个元素
return 0;
}
练习
栈最有用的地方就是广度优先搜索(dfs)了,建议大家阅读以下两篇博文,详见dfs (做广告)。
算法初探系列1——深度优先搜索之搜索枚举
算法初探系列2——深度优先搜索之计算思维
算法初探系列3——深度优先搜索之减枝策略