数据结构 | 队列的C++运用

数据结构 | 队列的C++运用,第1张

数据结构 | 队列的C++运用

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除 *** 作,而在表的后端(rear)进行插入 *** 作,和栈一样,队列是一种 *** 作受限制的线性表。进行插入 *** 作的端称为队尾,进行删除 *** 作的端称为队头。

——《百度百科》

目录

构造

相关函数

适用场景

循环队列 

链队列 


构造

队列 又被称为 先进先出 (First In First Out) 的线性表,简称 FIFO 队列。

其构造函数如下:

queue queue;

判断队列空的方法:队首标志等于队尾标志时即为对空。判断队列满的方法:队尾加1为队首即为队满。 相关函数

queue.empty():用于判断队列内是否还含有元素,队列为空则返回true,否则返回falsequeue.size():返回队列中元素的个数queue.pop():删除队列首元素但不返回其值queue.front():返回队首元素的值,但不删除该元素queue.push():在队尾压入新元素queue.back():返回队列尾元素的值,但不删除该元素 适用场景

从上至下打印二叉树实现滑动窗口... 循环队列 

循环队列即将队列队尾和队首相连,可通过标志位来进行判别。

队列的队尾标志+1即等于其队首标志,这就代表这样的队伍表示为循环队列。

在循环队列中,当队列为空时,有front = rear;当所有队列空间全占满时,也有front = rear。

为了区别这两种情况,规定循环队列最多只能有MaxSize-1个队列元素,当循环队列中只剩下一个空存储单元时,队列就已经满了。

 因此,队列判空的条件是front = rear,而队列判满的条件是front =(rear+1)%MaxSize。

链队列 

 链队列即为基于链表的队列,对于链队列,不需要考虑O(n)的空间移动问题,只需要确定链表的哪一头将作为队首,哪一头将作为队尾即可。

目的是保证能够像队列尾部填充元素,同时也能在链表头结点处删除元素。

个人学习整理用,欢迎纠正与讨论。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5714455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存