【c++入门(2)】队列和queue

本文介绍了C++中的队列数据结构,详细讲解了队列的定义、特点和顺序队列的操作,包括队列满的问题及解决办法——循环队列。此外,还探讨了C++标准库中的`queue`容器,包括其使用头文件、命名空间,以及如何进行入队、出队和数据访问操作。文章最后通过示例展示了如何在没有遍历支持的情况下输出`queue`中的所有元素,并提出了窗口排队问题的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.队列
将队列我们先看一看线性结构:
【定义】线性结构中的数据元素之间是一对一的关系。
举个例子:
在这里插入图片描述定义:
在这里插入图片描述

【特点】
存在唯一的一个被称为“第一个”的数据元素
存在唯一的一个被称为“最后一个”的数据元素
除第一个之外,每个数据元素都只有一个前驱
除最后一个之外,每个数据元素都只有一个后继
说完了线性结构,再来看队列:
【定义】
队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First InFirst Out)的线性表,简称FIFO,最早进入队列的元素最早离开。允许插入的一端称为“队尾” ,允许删除的一端称为“队头”。
【小贴士】
在这里插入图片描述
队列的实现:
① 顺序表q[m]:用来存储队列中的元素,m是队列能存储元素的最大容量
② 队首指针front:指向队首元素存储的位置
③ 队尾指针rear:指向队尾元素的下一个位置(可插入元素的位置)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
长度为𝑛的顺序队列,最多进行𝑛次push操作后,队列就满了,即使有元素已经出队列,也无法再插入新的元素,造成空间的浪费。
在这里插入图片描述
此时,即使𝑟中还有5个空闲位置,但是却无法再进行push操作了!
【循环队列】
循环队列是一种首尾相接的顺序存储结构,跟顺序队列使用完最后一个存储单元后就无法再存储不同,当循环队列使用完最后一个存储单元后会跳转到第一个存储单元继续存储。
在这里插入图片描述
循环队列操作
① 初始化init():front = 0,rear = 0; 此时队列为空,没有元素。
② 判断是否为空empty() :

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

{∞}

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值