队列是一种以先进先出(FIFO) 顺序管理元素的数据结构 ------ 最早进入队列的元素会最早被取出。
生活中的队列示例
打印机🖨️处理任务时,如果你发送 3 个文档打印,打印机🖨️将按接收顺序依次处理:第一个文档先打印,然后是第二个,最后是第三个。
编程中的队列应用
队列常用于需要按顺序处理任务的场景,例如:
Web 『服务器』将 incoming 请求排队,逐个处理;
聊天应用将消息排队,按输入顺序发送;
导航应用将位置点排队,用于广度优先搜索(BFS) 逐层探索地图。
4 种常见队列类型
简单队列(Simple Queue):仅允许从尾部添加元素、从头部移除元素,严格遵循 FIFO。
循环队列(Circular Queue):与简单队列类似,但尾部元素会 "连接" 到头部,形成循环,可复用空间。
双端队列(Double-Ended Queue,简称 Deque):允许从头部和尾部同时添加或移除元素,类似公交站排队时,人可以从两端进出。
优先队列(Priority Queue):不按到达顺序处理元素,而是按 "优先级" 处理 ------ 优先级高的元素先被处理(如外卖 App 中,VIP 订单优先于普通订单)。
队列的核心操作
所有队列都包含一组基础操作,本教程将重点实现以下常用操作:
enqueue(入队):将元素添加到队列尾部(如顾客排到队伍末尾);
dequeue(出队):移除并返回队列头部的元素;
getFront(获取队首):查看队首元素但不移除(如查看队伍最前面是谁);
getRear(获取队尾):查看队尾元素但不移除(如查看队伍最后是谁);
isEmpty(判空):检查队列是否为空;
isFull(判满):检查队列是否达到最大容量;
peek(预览):与 getFront 功能相同,快速查看队首元素;
size(获取大小):返回队列中的元素数量(如统计队伍人数)。