本章进度 4 / 18
22%
数据结构与算法直觉·理解·10 分钟
正文已完成

栈与队列是关键差别是取出顺序

用后进先出与先进先出理解撤销、导航、排队和任务消费。

L279
为什么现在学

先用本课建立“栈与队列”的基本直觉,后面的判断和练习才不会只靠记结论。

本课会用什么
  • 无需安装新工具
  • 直接阅读并完成本页理解检查

栈与队列都保存一串待处理元素,取出顺序各不相同。栈先处理最近加入的元素,队列先处理等待最久的元素;这个顺序会直接改变用户体验和系统公平性。

这一课的结果

能用取出顺序解释一个场景为什么更像栈或队列。

核心概念

先把关键判断说清楚

01

栈是后进先出

最近压入的状态最先弹出,适合撤销、函数调用和返回上一层。

02

队列是先进先出

先进入的任务先被处理,适合排队、消息消费和按到达顺序服务。

03

顺序是业务规则

选错结构不仅影响性能,还可能让旧任务长期得不到处理或让撤销恢复到错误状态。

案例拆解

撤销按钮与上传任务不能共用一种顺序

设计工具要支持撤销操作,同时后台要依次处理用户上传的文件。

  1. 01

    每次编辑前把当前状态压入撤销栈,撤销时先弹出最近状态。

  2. 02

    上传请求按到达时间进入处理队列,工作线程从队首取任务。

  3. 03

    分别记录栈顶和队首,避免把“最新上传”误当成优先处理。

案例结果

撤销回到最近一步,上传则维持先来先服务,两种体验都符合预期。

提交前练习

现在轮到你

从一个真实流程中找出待处理元素,并判断下一项应该怎样取出。

选做练习:本节练习可用于加速你巩固,但不影响继续学习。

内容会自动保存在当前设备
查看参考答案与评分标准

参考答案

元素是用户连续打开的页面;取出规则是返回时先回到最近页面;结构是栈,打开详情页时压栈,点击返回时弹出详情页并显示上一页。

评分标准

  • 元素边界清楚
  • 取出顺序有业务理由
  • 示例与所选结构一致

本课收口 · 理解检查

用 30 秒确认你理解了

用 30 秒理解检查确认你抓住了重点;阅读标记、练习和总结都不设硬门槛。

0 / 1
02完成练习(选做)0 / 3 项已填写,不影响完成03通过理解检查点此去回答,约 30 秒
04补一句总结(可选)可以留空,不影响完成本课。
浏览器“返回上一页”最接近哪种结构?
你现在更接近哪一种状态?
尚有必填项未完成,请补齐后再继续。

资料来源

继续核对与延伸阅读

本课内容最近更新于 。