栈
描述:后进先出
实现:可以用链表,数组
应用
A:括号匹配验证
实现:
对于左括号进栈,对于右括号判断栈是否为空,若为空,则匹配失败,否则出栈。
对于只用一种括号的情况:有另一种改进方式,其实可用一个计数变量,初始化为0,直接统计左单括号即可,不用存储括号类型。
B:进制转换
C:算术表达式的计算
用两个栈:一个存储符号,一个存储数值
D:递归的应用,保存断点
E:深度优先搜索
F:单调栈
队列
描述:先进先出,正由于这个思想,经常用来做缓冲
实现:数组,链表
A: 顾名思义,用来排队。比如舞伴配对问题
B:缓冲队列,用于操作系统中进程调度缓冲
C:优先级队列 ,用堆实现,根据优先级进行进程调度
D:用于广度优先搜索,比如迷宫问题点击打开poj题目链接
E:循环队列
F:双端队列,队头和对尾都可进可出
G:单调队列,队列元素保持单调性的队列