
本专栏聚焦算法题实战,系统讲解算法模块:以《C++ 编程》、《数据结构和算法》等板块以题带点,讲解思路与代码实现,帮助大家快速提升代码能力。

一、队列的概念
队列是一种访问受限的线性表,它只允许在表的一端进行插入操作,在另一端进行删除操作。允许插入的一端称为队尾,允许删除的一端称为队头。先进入队列的元素会先出队,故队列具有先进先出(FirstInFirstOut)的特性。
二、队列的模拟实现
基础结构定义
使用一个足够大的数组充当队列,配合两个指针变量来维护状态:
h:标记队头元素的前一个位置(左开右闭区间[h, t])t:标记队尾元素的位置
这种设定主要是为了代码书写方便,只要能控制逻辑不出错,具体实现方式可根据习惯调整。
const int N = 1e6 + 10;
int h, t; // 队头指针,队尾指针
int q[N]; // 队列存储数组
核心操作详解
1. 入队 (push)
我们依旧从下标为 1 的位置开始存储有效元素。将新元素放入队尾并更新队尾指针。
// 入队
void push(int x) {
q[++t] = x;
}
时间复杂度:O(1)
2. 出队 (pop)
出队操作实际上是移动队头指针,跳过当前队头元素。
// 出队
void pop() {
h++;
}
时间复杂度:O(1)




