课程 279 / 365
76%
数据结构与算法直觉·理解·10 分钟
正文已完成

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

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

L279

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

这一课的结果

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

核心概念

先把关键判断说清楚

01

栈是后进先出

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

02

队列是先进先出

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

03

顺序是业务规则

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

案例拆解

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

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

  1. 01

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

  2. 02

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

  3. 03

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

案例结果

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

提交前练习

现在轮到你

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

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

参考答案

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

评分标准

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

本课收口 · 学习证据

完成,不等于随手打一个勾。

确认阅读、保存练习,再用 30 秒检查和一句话总结留下真实学习证据。

0 / 3
02完成本课练习0 / 3 项必填内容已填写
03通过理解检查约 30 秒
浏览器“返回上一页”最接近哪种结构?
你现在更接近哪一种状态?
完成上面三项后,才能把本课记为已验证。

资料来源

继续核对与延伸阅读

本课内容最近更新于