栈 & 队列 应用场景
栈(后进先出 LIFO)
- 函数调用栈:递归、方法调用,保存返回地址
- 括号匹配:有效括号、HTML标签匹配
- 表达式求值:逆波兰表达式、计算器
- 浏览器后退、编辑器撤销
- 二叉树非递归遍历、DFS深度优先搜索
- 最小栈、单调栈:找下一个更大元素、滑动窗口
队列(先进先出 FIFO)
- 消息队列、任务调度:线程池、异步任务、生产者消费者
- 广度优先 BFS:二叉树层序遍历、迷宫最短路径
- 缓冲区:IO缓冲区、打印队列
- 滑动窗口、单调队列:求最大值、区间最值
- 排队系统:医院挂号、点餐叫号
一句话区分
- 栈 :处理最近产生的数据(撤销、调用、括号)
- 队列 :处理先来先服务的数据(排队、任务、BFS)