线性结构 —— 栈与队列
【概述】
stack 和 queue 是在程序设计中经常会用到的数据容器,STL 提供了方便的堆栈、队列的实现,准确地说,STL 中的 stack 与 queue 不同于 pair、vector 等容器,而是对栈、队列这三个数据结构的重新包装。
【stack 的使用】
stack 定义在 <stack> 头文件中,其提供了堆栈的全部功能,即实现了先进后出的数据结构。
定义: stack<type> stackName
stack 的基本操作有:
- s.push(x):将元素 x 入栈
- s.pop():将栈顶元素删除
- s.top():访问栈顶元素
- s.empty():判断栈是否为空,当栈为空时返回 true,否则返回 false
- s.size():访问栈中元素的个数
【queue 的使用】
queue 定义在 <queue> 头文件中,其提供了队列的全部功能,即实现了先进先出的数据结构。
定义:queue<type> queueName
queue 的基本操作有:
- q.push(x):入队,将 x 存入队列末端
- q.pop():出队,将队列的第一个元素弹出
- q.front():访问队首元素
- q.back():访问队尾元素
- q.empty():判断队列是否为空,当队列为空时返回 true,否则返回 false
- q.size():访问队列中元素的个数
【例题】
1.栈
- 后缀表达式的值(信息学奥赛一本通-T1331)(stack 计算后缀表达式):点击这里
- 计算(信息学奥赛一本通-T1356)(stack 计算中缀表达式):点击这里
- 中缀表达式值(信息学奥赛一本通-T1358)(stack 计算中缀表达式):点击这里
- 扩号匹配问题(信息学奥赛一本通-T1203)(stack 匹配括号):点击这里
- 表达式括号匹配(信息学奥赛一本通-T1353)(stack 匹配括号):点击这里
- 括弧匹配检验(信息学奥赛一本通-T1354)(stack 匹配括号):点击这里
- 字符串匹配问题(信息学奥赛一本通-T1355)(stack 匹配括号):点击这里
- Vasya and Books(CF-1073B)(stack+模拟):点击这里
- 车厢调度(信息学奥赛一本通-T1355)(stack+模拟):点击这里
- 炫酷雪花(2019牛客寒假算法基础集训营 Day5-H)(stack+贪心):点击这里
- wzoi(2019牛客寒假算法基础集训营 Day6-I)(stack+贪心):点击这里
- Bracket Sequence(CF-223A)(栈的分段统计):点击这里
- Ultimate Army(Gym-102267I)(双栈模拟):点击这里