news 2026/6/26 12:14:40

队列:一支队伍里的“先来后到“

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
队列:一支队伍里的“先来后到“

引子:老王食堂的"打饭长龙"

还记得上一篇里,那位在食堂盯着"一摞盘子"悟出"栈"的老王吗?

那天,他在洗碗台前琢磨出了"后进先出"的栈,意犹未尽。一转身,却被食堂里另一个更热闹的场景吸引住了——

打饭窗口前,排起了一条长长的队伍。

学生们自觉地一个接一个排在后面,打饭师傅则永远从队伍最前头的那位开始打。打完一个,前头那位心满意足地走了,后面的人自动往前挪一步,新来的同学,则乖乖地排到队伍的最末尾

老王盯着这条井然有序的长龙,又一次拍了大腿,眼睛放光:

“妙啊!你们看这条队伍,也有个雷打不动的规矩——和那摞盘子刚好反过来!盘子是’后来的先走’,可这队伍,是’先来的先打饭、先来的先离开’!谁先排上,谁就先被服务,公平得很!”

打饭师傅笑道:“王哥,排队不就这样嘛,先来后到,天经地义。”

老王哈哈大笑:“就是这’天经地义’四个字里头,又藏着计算机世界里一个无比重要、无比公平的’摆货家什’啊!而且,它正好是’那摞盘子’的’镜像兄弟’!”

这个藏在"打饭长龙"里的家什,正是我们这一篇的主角,也是"栈"那位最经典的"对照搭档"——

队列(Queue)。


第一章:队列是什么?一支"只能尾进头出"的队伍

要理解队列,你只需牢牢记住食堂里那条打饭长龙的画面。

队列的全部精髓,就浓缩在它那条铁打的规矩里:

新来的,只能排到"队尾";被服务的,只能是"队头"。一头进,另一头出,绝不插队、绝不逆行。

这条规矩,带来了一个无比鲜明的特征,它也有个专门的名字,叫——

FIFO:First In, First Out,“先进先出”。
翻译成大白话就是:“先来的,先走。”

是不是觉得特别耳熟?没错,它正好和上一篇"栈"的LIFO(后进先出)针锋相对、完美镜像!

我们先来认识队列的几个"行话":

  • 队头(Front):队伍的最前面,是唯一"出去"的地方(打饭、离开);
  • 队尾(Rear):队伍的最后面,是唯一"进来"的地方(新人排队);
  • 入队(Enqueue):从队尾加入一个新成员;
  • 出队(Dequeue):从队头送走一个老成员。

我们来看一支队伍是怎么"排长"又"变短"的:

入队过程(新人只能从队尾排): 来了A: 来了B: 来了C: 队头 队尾 队头 队尾 队头 队尾 [ A ] [ A ][ B ] [ A ][ B ][ C ] ↑进来 ↑ ↑进来 ↑ ↑进来 出队过程(只能从队头走): A先走: B再走: 队头 队尾 队头 队尾 [ B ][ C ] [ C ] ↑A从这头离开 ↑B从这头离开

💡核心画面:队列,就是一支只能从队尾进、从队头出的队伍。你想插队、想从中间走?对不起,规矩不允许!先来的先服务,后来的乖乖等——这就是"先进先出",公平、有序,最讲"先来后到"。


第二章:栈 vs 队列——一场"出入口"的镜像对决

讲到这里,必须把队列和上一篇的"栈"拉到一起好好对比一下——因为它俩,简直就是一对"镜像兄弟"!

它们的区别,只在一个地方:出入口在哪里。

栈(一摞盘子) 队列(一条长龙) 形象: ┌───┐ ────────────→ │ C │← 顶(进+出都在这) 进→[A][B][C]→出 │ B │ 队尾↑ ↑队头 │ A │ (尾进) (头出) └───┘ 规矩: LIFO 后进先出 FIFO 先进先出 出入口: 同一头(顶)进出 一头进,另一头出 谁先走: 最后来的先走 最先来的先走 关键词: 反悔、返回 公平、有序

老王一语道破了它俩的精髓:

"栈,是’一个口’——进也从顶上进,出也从顶上出,挤在一头,所以’后来的反而先走’。
队列,是’两个口’——尾巴进,脑袋出,一进一出泾渭分明,所以’先来的就先走’。

一个像’死胡同’,进去了得原路退出来;一个像’过道’,从这头进、那头出,畅通无阻。"

💡深刻规律:栈和队列,是数据结构世界里又一对经典的"对照搭档"(就像数组 vs 链表那样)。

  • 栈"后进先出",擅长处理"反悔、返回、层层深入"的事;
  • 队列"先进先出",擅长处理"排队、调度、先来后到"的事。

它们没有谁好谁坏,只是分别对应了现实世界里两种最常见的秩序——“后来居上"和"先来后到”。


第三章:队列的"动作"——简单、公平、快(O(1))

和栈一样,队列的操作也简单到极致——就两个动作

3.1 入队(Enqueue):从队尾加入

新成员来了,乖乖排到队伍最末尾。

3.2 出队(Dequeue):从队头送走

轮到服务了,永远是队头那位先走。而且你送走的,必然是"最早来的"那一个。

就这么两个动作。因为永远只在"队头"和"队尾"两个固定端点操作,不用动中间的任何人,所以它也快得惊人:

无论这支队伍有10个人还是1000万人——入队、出队,永远只是"队尾加一个/队头走一个",一步到位。这正是我们最爱的、最快的O(1) 时间复杂度

一个小插曲:队列的"底层"与"环形"智慧

和栈一样,队列底层也是既可以用数组、也可以用链表搭起来的(数组链表这两位"老前辈"又一次重出江湖)。

不过,用数组实现队列时,会遇到一个有趣的小麻烦:

队头的人不断离开,前面就空出一截位置,可这些位置白白浪费了(队伍只往后排,前面腾出的地儿用不上)。聪明的工程师想了个妙招——让队列首尾相连,弯成一个"圈"!后面排满了,就绕回到前面空出来的位置接着排。这就叫"环形队列(循环队列)",把空间利用得明明白白,一点不浪费。

普通队列:[空][空][C][D][E] ← 前面两格白白浪费了 环形队列: ┌──→ 弯成圈,前面的空位绕回来接着用 [F][G][C][D][E] ← 一格不浪费!

💡小智慧:环形队列告诉我们——有时候,把"直线"思维弯成"循环"思维,就能让原本浪费的资源重新流动起来。这又是一个"换个角度,柳暗花明"的妙例。


第四章:队列的"用武之地"——凡是"排队",皆是队列!

队列的应用,比栈还要直白——只要现实里有"排队、按先来后到处理"的地方,背后几乎都是一个队列在工作!

4.1 经典应用一:打印机的"任务排队"

办公室里十个人,同时往一台打印机发文件,为什么不会乱成一锅粥?

因为打印机内部有一个队列!谁先点了打印,谁的任务就先"入队",打印机则老老实实从"队头"开始,一个一个打。先发的先打印,后发的乖乖排队等——公平有序,绝不插队。

4.2 经典应用二:叫号系统(银行、医院、餐厅)

你去银行办业务,取个号"A052",然后坐等屏幕叫到你。

这就是一个活生生的队列!你取号,就是"入队"(排到队尾);柜员每办完一个,就叫下一号,就是"出队"(队头离开)。严格的"先来后到",保证了排队的公平——这正是"先进先出"在守护着秩序。

4.3 经典应用三:你刷的每一条消息、每一个视频

你发微信、抢演唱会门票、双十一下单……成千上万的请求涌向服务器,怎么办?

服务器用队列把这些请求"排好队",按先来后到一个个处理,避免一拥而上、瞬间崩溃。这叫"消息队列",是支撑起整个互联网"扛住高并发"的幕后功臣。你抢票时那句"前面还有2000人排队",背后就是一个巨大的队列!

4.4 经典应用四:树和图的"层层探索"(BFS)

这是队列一个稍高级、但极其重要的应用——广度优先搜索(BFS)

想象你要在一座迷宫里找出口,"广度优先"的策略是:先把眼前所有的岔路都看一遍,再一层一层向外扩散,像水波纹一样。而维持这种"一层一层、先发现的先探索"的秩序,靠的正是队列!(后面讲"树"和"图"时,它还会闪亮登场。)

💡恍然大悟:原来队列就是现实世界"排队"的完美映射!凡是需要"公平对待、先来后到、按顺序处理"的地方,队列就在默默维持着秩序。它不像栈那样玩"反悔、返回"的花样,它只专注于一件朴素而伟大的事——让每一个"先来的",都不被辜负。


第五章:队列的"性格画像"

老王给队列也画了一张"性格画像",和栈的那张并排贴在一起:

队列(一条长龙) 核心规矩: FIFO 先进先出(尾进头出) 入队/出队: ⚡ 极快 O(1)(只动队头队尾) 能否插队: ❌ 不行!必须老实排到队尾 关键词: 公平、有序、先来后到 一句话: 最讲规矩的"排队大师",让先来的不被辜负

老王看着栈和队列这两张并排的画像,感慨万千:

"你看这两兄弟——栈,教会我们’反悔与返回’的智慧;队列,则守护着’公平与秩序’的底线。

一个让我们在做错时能’回头’,一个让我们在拥挤时仍’有序’。它俩看着简单,可这世间的运转,还真离不开它们呢!"


尾声:一条长龙的智慧,亦是人生的智慧

老王的"一条长龙",从食堂的打饭奇观,讲到打印机、叫号机、抢票系统的幕后真相,终于把"队列"这个看似平凡、实则公平的家什,说了个透。

但当我们合上书,会发现这一条朴素的队伍,竟也排着几分耐人寻味的人生哲理。

第一,“先来后到”,是这世间最朴素的公平。

队列用一条简单的规矩——“先进先出”——守护着排队的公平:谁先来,谁先被服务,没有特权,没有插队。这何尝不是文明社会最珍贵的底色?那一条条自觉排起的长龙,背后是一种朴素的契约精神——我尊重"先来后到",相信只要老实排队,就终会轮到我。一个愿意为公平排队、也愿意守护这份公平的人,本身就在为这个世界,增添着一份秩序的温柔。

第二,急不得,也跳不得,耐心等待自有回响。

队列里没有捷径——你想插队?规矩不允许。你能做的,就是排在该在的位置,一步一步往前挪。这像极了人生的许多时刻。我们总想"一步登天、弯道超车",可有些事,就是急不得、跳不得,需要你老老实实地排队、踏踏实实地积累。别羡慕那些看似"插队"的人——真正的成长,没有捷径;你认真排过的每一步队,攒下的每一分耐心,终会在轮到你的那一刻,给你回响。

第三,把"直线"弯成"循环",浪费也能变成流动。

还记得那个"环形队列"的妙招吗?把白白浪费的空位,弯成一个圈重新利用起来。这是一种了不起的智慧——当资源看似"用尽、浪费"时,换一种’循环’的眼光,往往就能让它重新流动。人生和事业又何尝不是?很多看似"走到尽头"的困境,并非真的无路可走,而是我们还困在"直线"的思维里。 试着把它弯成一个"循环",让能量重新流转起来——你会发现,绝处,往往藏着逢生。

下次,当你在银行安静地等待叫号、在抢票时看着"前方排队人数"、或是在食堂里自觉地排到长龙末尾时,请记得——

在那看不见的背后,正有一条条朴素的"队伍",用它"先进先出"的古老智慧,为这个拥挤的世界,又公平又有序地,守护着每一份"先来后到"。

队列,就是这门关于"公平与秩序、先来后到"的、朴素而温暖的智慧。

它和"栈"这位镜像兄弟一道,共同道出了那个朴素而隽永的真理——

有些事,要懂得"回头"(栈),
有些事,要学会"排队"(队列);
该反悔时能从容退回,
该等待时能耐心守序——
一个人若能在这两者间拿捏好分寸,
便能在这熙熙攘攘的人间,走得既灵活,又坦荡。

这,就是藏在一条"长龙"背后的,队列的全部浪漫。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 12:14:06

ZigBee 3.0与NXP无线MCU实战:构建稳定低功耗物联网网络

1. 项目概述:为什么低功耗无线网络是物联网的基石在智能家居和工业物联网领域,我们常常面临一个核心矛盾:设备需要“永远在线”以响应指令,但又必须“极度省电”以维持数年的电池寿命或依赖微弱的能量采集。这个矛盾催生了以ZigBe…

作者头像 李华
网站建设 2026/6/26 12:10:31

如何完全掌握微信聊天记录:开源工具WeChatMsg的终极实践指南

如何完全掌握微信聊天记录:开源工具WeChatMsg的终极实践指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…

作者头像 李华
网站建设 2026/6/26 12:05:53

DockDoor:3步解锁macOS高效窗口管理,告别混乱桌面

DockDoor:3步解锁macOS高效窗口管理,告别混乱桌面 【免费下载链接】DockDoor Window peeking, alt-tab and other enhancements for macOS 项目地址: https://gitcode.com/gh_mirrors/do/DockDoor 你是否经常在macOS的多个窗口间迷失方向&#xf…

作者头像 李华
网站建设 2026/6/26 12:05:37

M68HC705PICS在线仿真器:嵌入式开发调试利器与实战指南

1. 项目概述与核心价值 在嵌入式开发的早期阶段,尤其是在上世纪90年代,Motorola(后来的Freescale,现为NXP的一部分)的M68HC05系列8位微控制器因其高性价比和可靠性,被广泛应用于从汽车电子到家电控制的各个…

作者头像 李华
网站建设 2026/6/26 12:02:42

怎样在ComfyUI中轻松部署Florence-2视觉语言模型:完整配置指南

怎样在ComfyUI中轻松部署Florence-2视觉语言模型:完整配置指南 【免费下载链接】ComfyUI-Florence2 Inference Microsoft Florence2 VLM 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Florence2 想要在ComfyUI中体验微软先进的Florence-2视觉语言模…

作者头像 李华
网站建设 2026/6/26 12:01:54

云帆培训考试系统更新说明v9.0.0

1、PC学员端&管理端更新 -- Vue2.0升级为Vue3.0 -- UI框架由Element-UI升级为ElementPlus -- 编译工具由Webpack更改为Vite -- 状态管理组件由Vuex更改为Pinia -- 代码格式化工具ESlintPrettier -- 增加UNO-CSS样式组件,简化页面样式 -- 重写代码风格&#xff0…

作者头像 李华