A3阶段 第二课 队列

2025年6月7日

学习时长

约1.5小时

难度

A3阶段/CSP-J

标签

数据结构

讲师

王骏峣

队列

核心概念: 队列是先进先出(FIFO)的线性表


如果A比B更早进入队列,那A一定比B先退出队列(FIFO,先进先出)


入队的一段叫队尾,出队的一端叫队首

队列的有关操作

入队:将新元素从队尾加入队列
出队:把排在最前面的元素从队列里出来


用数组模拟队列

创建队列

数组队列的创建
int q[N]; //开辟数组队列,N是队列最大的大小
int l = 0,r = 0; //使用变量记录队首和队尾位置

操作数组队列

数组队列的操作,注意:错误码按照自己的习惯更改
//入队
q[++r] = x;
//出队
if(l <= r) l ++;
//询问队首元素
if(l <= r)return q[l];
else return 0x3f3f3f04;

STL中的队列容器(queue)

特点:简单易用,好记


queue的操作

代码 说明
STL queue操作
#include<queue>;
导入头文件
STL queue操作
queue<int> q;
创建一个存储int类型数据的队列
STL queue操作
q.push(a);
将a入队
STL queue操作
q.pop();
将队首出队
STL queue操作
int t = q.front();
将t赋值为q的队首元素
STL queue操作
int si = q.size();
将si赋值为q的大小(元素个数)
STL queue操作
bool isempty = q.empty();
将isempty赋值为q的是否为空(bool)

例题

第一题 【模板】队列

前往

第二题 约瑟夫问题

前往

第三题 [NOIP2010 提高组] 机器翻译

前往

第四题 [ABC335C] Loong Tracking

前往

第五题 [COCI2007-2008#5] AVOGADRO

前往

学习要点总结

  1. 队列是一种基础的数据结构,是一种具有FIFO特性的线性表
  2. 队列最重要的操作:入队和出队
  3. 如果所有元素都有出队,那么对于任意入队序列,出队序列有且仅有一种,并且与入队序列相同
  4. 可以用数组模拟栈,也可以用更方便的queue容器