Skip to content

03 栈与队列 — 先来后到的两种规则

李永乐式比喻

  • = 一摞盘子。你洗完一个就放最上面,要用的时候也从最上面拿。后洗的先拿走(后进先出)
  • 队列 = 食堂排队打饭。先到的人先打到饭,后来的人排后面。先来的先吃(先进先出)

名词映射

英文中文本质比喻
Stack后进先出(LIFO)一摞盘子
Queue队列先进先出(FIFO)食堂排队
Push/Pop入栈/出栈栈顶操作放盘子/拿盘子
Enqueue/Dequeue入队/出队队尾加/队首取排队/打饭

栈的结构


队列的结构


企业场景

栈的应用

  • 函数调用栈(递归深度太大导致栈溢出)
  • 浏览器的前进/后退(历史记录就是栈)
  • 代码括号匹配(左括号入栈,右括号出栈匹配)
  • 操作系统中断处理

队列的应用

  • 消息队列(RabbitMQ / Kafka)-- 解耦 + 削峰
  • 线程池的任务等待队列
  • 打印机的任务排队
  • 秒杀系统的请求排队

AI 协作

AI 生成:
  - 用 Python 列表实现栈 -- 5 行代码
  - LeetCode 20 有效括号 -- 用栈匹配
  - 用 collections.deque 实现队列 -- 3 行代码

人类决策:
  - 业务强调"后进先处理"(如撤销操作)-> 用栈
  - 业务强调"公平排队"(如订单处理)-> 用队列
  - 需要优先级 -> 用优先队列(堆)

OPC 超级个体实战指南