队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除 *** 作,而在表的后端(rear)进行插入 *** 作,和栈一样,队列是一种 *** 作受限制的线性表。进行插入 *** 作的端称为队尾,进行删除 *** 作的端称为队头。
——《百度百科》
目录
构造
相关函数
适用场景
循环队列
链队列
构造
队列 又被称为 先进先出 (First In First Out) 的线性表,简称 FIFO 队列。
其构造函数如下:
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)的空间移动问题,只需要确定链表的哪一头将作为队首,哪一头将作为队尾即可。
目的是保证能够像队列尾部填充元素,同时也能在链表头结点处删除元素。
个人学习整理用,欢迎纠正与讨论。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)