-
定义
一种可以实现"先进先出"的存储结构
-
分类
-
链式队列——用链表实现
-
静态队列——用数组实现
-
静态队列通常是循环队列
-
循环队列
-
静态队列为什么必须是循环队列
-
循环队列需要几个参数来确定
需要两个参数来确定:front(队首)和rear(队尾)
但是具体含义在不同场合有不同的含义
-
队列初始化
front和rear的值都为0
-
队列非空
front代表的是队列的第一个元素
rear代表的是队列最后一个有效元素的下一个元素
-
队列空
front和rear的值相等,但不一定是零
-
-
循环队列入队伪算法
1.将值存入rear所代表的位置
2.rear值上移
- rear = rear + 1 将浪费大量空间——错误
- rear = (rear+1)%数组长度——循环队列
-
循环队列出队伪算法
1.front = (front+1)%数组长度
-
如何判断循环队列是否为空
如果front和rear的值相等,则该队列一定为空
-
如何判断循环队列是否为满
1.多增加一个参数(长度)来判断是否满
2.最后一个位置丢弃,rear和front的值紧挨着——(rear+1)%数组的长度==front,该方式用的多
-
解释
front和rear的大小没有什么规律(可大可小可相等)
但是一开始front==rear
入队后rear>front
溢出后rear<front
if((rear+1)%数组的长度==front) 已满 else 未满
-
-
循环队列的操作
- 入队
- 出队
-
-
-
-
队列的应用
所有与时间有关的操作都和队列有关(先进先出)
受限线性表——队列
最新推荐文章于 2024-09-06 10:38:06 发布