队列
来源:互联网 发布:怎么购买捷易通软件 编辑:程序博客网 时间:2024/05/16 08:13
1.定义
队头(Front):允许删除的一端,又称为队首。
队尾(Rear):允许插入的一段。
空队列:不含任何元素的空表。
2.存储结构
(1)顺序存储
初始状态(队空条件):Q.rear==Q.front==0
进队操作:队不满时,先先送值到队尾元素,再将队尾指针加1。
出队操作:队不空时,先取队头元素,再将对头指针加1。
(2)循环队列
初始时:Q.front==Q.rear=0
(出队)队首指针进1:Q.front=(Q.front+1)%MaxSize
(进队)队尾指针进1:Q.rear=(Q.rear+1)%MaxSize
队列长度:(Q.rear+Maxsize-Q.front)%Maxsize
备注:带有牺牲一个单元来区分队空和队满,入队时少用一个队列单元,以“队头指针在队尾指针的下一位置作为队满的标志”
队满标志:(Q.rear+1)%Maxsize==Q.front
队空标志:Q.front == Q.rear
队列中的元素个数:(Q.rear+Maxsize-Q.front)%Maxsize
(3)队列的链式存储
实际上是一个同时带有队头指针和队尾指针的单链表。
当Q.front == NULL 且 Q.rear == NULL时,链式队列为空。
(4)双端队列
双端队列是指允许两端都可以进行入队和出队操作的队列。
输入受限的双端队列:允许在一端进行插入和删除,但是在另一端只允许删除的双端队列。
输入受限的双端队列:允许在一端进行插入和删除,但是在另一端只允许插入的双端队列。
(5)队列的应用
1.层次遍历
过程描述:
- 根节点入队
- 若队空(所有节点已处理完毕),则结束遍历,否则重复步骤3
- 队列中的第一个节点出队,并访问它。若有做孩子,则将左孩子入队,若有右孩子,则将右孩子入队,返回步骤2
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- String的构造,析构,赋值,赋值函数编写
- Object类详解
- Intellij idea下载及使用Intellij idea开发web
- dos命令将项目文件打包成war或jar
- [人脸识别]使用VGG Face Model微调(Fine tune)自己的数据集
- 队列
- 使用ovn-trace分析OVN 逻辑流表(Logical Flow)
- 统计英文文章中的字符串个数
- 9月30日机房模拟赛题解
- GreenDao源码详解第二篇(sqlite数据库操作流程分析)
- 十分钟完成Bash 脚本进阶!列举Bash经典用法及其案例
- 警察叔叔做笔录时,那个程序员一直在笑
- 搭建python数据分析平台
- 【Python面授视频】七分钟带你拆解Python职业方向!