《数据结构:从0到1》-09-队列

队列(Queue):先进先出

还记得我们上一篇文章聊的“栈”吗?那种后进先出(LIFO)的规则,就像我们叠盘子一样。今天,我们要来聊聊它的好兄弟——队列(Queue)。如果说栈是“后来者居上”,那队列就是彻头彻尾的“先来后到”,它讲究公平,讲求秩序。
在这里插入图片描述

计算机里面好多理论都是源于生活,队列就是其中一个经典例子。下面以奶茶店排队的场景为例,详细介绍一下:

  • 你先来的,所以你排在最前面。
  • 后面来的人,依次排在队伍末尾。
  • 店员做完一杯奶茶,总是递给队伍最前面的人。
  • 最前面的人拿到奶茶后离开,后面的人依次向前移动一位。

这个“排队的队伍”,就是队列在现实世界中最完美的体现! 它的核心规则就是 FIFO,也就是 先进先出

在计算机世界里,队列几乎无处不在:打印任务排队、CPU进程调度、网络数据包缓存、甚至是我们在键盘上敲下的每一个字符等等,涉及到的底层逻辑都离不开队列。

今天,就让我们一起从零开始盘一盘队列!

本篇学习路线图:

队列:先进先出
基础队列
循环队列
优先队列
实际应用
数组实现
链表实现
解决假溢出
队空队满判断
出队顺序变化
基于堆的实现
消息队列
CPU调度
BFS算法

一、 队列是什么?

在开始敲代码之前,我们必须从骨子里理解队列的定义和操作。

1.1 队列的定义与核心特性

队列(Queue) 是一种特殊的线性表,它只允许在表的前端进行删除操作,在表的后端进行插入操作。

我们把进行插入操作的一端称为 队尾(Rear),把进行删除操作的一端称为 队头(Front)

队列的两个核心操作:

  • 入队(Enqueue):将一个新元素放入队尾。
  • 出队(Dequeue):从队头移除一个元素。

通常还会伴随两个常用的操作:

  • 获取队头元素(Peek/Front):看一眼队头是谁,但不让它出队。
  • 判断队列是否为空(IsEmpty):看看队伍里是不是没人了。

队列的FIFO特性,就像一根单行道的水管:

  • 水从一端(队尾)流入
  • 从另一端(队头)流出
  • 先流进去的水,一定会先流出来
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QuantumLeap丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值