队列Queue

按先进先出顺序组织待处理元素。

核心约束
入队顺序决定出队顺序。
适用问题
任务缓冲、流水线、消息传递。
边界与取舍
FIFO 不直接表达优先级或公平配额。
ABCD出队入队队头队尾
先进先出:当前从队头取出 A;D 入队后排在 C 后面,成为新的队尾。

常见操作#

n 为队列元素数。

操作时间复杂度条件与说明
查看队首O(1)O(1)保存队首位置。
入队 / 出队O(1)O(1)带首尾指针的链表或固定容量环形队列;不包含分配和阻塞等待。
动态环形数组入队摊还 O(1)O(1);扩容最坏 O(n)O(n)按几何比例增长,避免每次出队都移动整个数组。
按值查找 / 遍历O(n)O(n)最坏检查所有待处理元素。

时间与空间#

时间复杂度
合适实现的入队 / 出队 O(1)O(1)
存储空间
O(n)O(n)

这是队列数据结构的成本;线程安全队列的锁、唤醒与等待时间另计。

工程中的应用#

2 个案例 · 附源码
基础原理参考资料

Princeton · Queue首尾指针链式 FIFO 队列及各操作成本。

Java 21 · ArrayDeque可用作队列的可增长环形数组实现。

7 个概念