本文已参与「新人创作礼」活动,一起开启掘金创作之路。
queue(队列)
1 介绍
队列是一种先进先出的数据结构。
比喻性的描述可为 一条两端通透的隧道,火车车厢先进就先出,后进就后出。
//头文件
#include<queue>
//定义初始化
queue<int>q;
2 方法函数
| 代码 | 含义 |
|---|---|
| front() | 返回队首元素 O(1) |
| back() | 返回队尾元素 O(1) |
| push() | 尾部添加一个元素副本 进队O(1) |
| pop() | 删除第一个元素 出队 O(1) |
| size() | 返回队列中元素个数,返回值类型unsigned int O(1) |
| empty() | 判断是否为空,队列为空,返回true O(1) |
3 队列模拟
使用q[]数组模拟队列
hh表示队首元素的下标,初始值为0
tt表示队尾元素的下标,初始值为-1,表示刚开始队列为空
队列模拟下标很容易弄错,每个人都有自己的队头队尾的下标表示方法,我习惯让队首队尾直接当做元素的下标来访问
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int q[N];
int main()
{
int hh = 0,tt = -1;
// 入队
q[++tt] = 1;
q[++tt] = 2;
// 出队
while(hh<=tt)
{
int t = q[hh++];
printf("%d ",t);
}
return 0;
}
其中关于队列,后续章节有优先队列和双端队列的介绍