队列
- 队列概念
- 队列的基本术语
- 队列操作的基本思想
- 循环队列出现原因
- 循环队列的操作
- 链队列的操作思想
概念
一种特殊(一端插入,另一端删除)的线性表
基本术语
- 队首/头(front)
- 队尾(rear)
队首
能进行删除的一端叫做队首
队尾
能进行插入的一端叫做队尾
队列操作的基本思想
1. 初始化
2. 进队
3. 出队
4. 判读是否为满队
初始化
front == rear 为空队列
进队
1. 数据插入队尾
2. 队尾指针向后移一位
出队
1. 删除数据
2. 队头指针加一
判断是否为满队
注意:按照以前的思想, front == rear 会和空队列的判断条件一样,出现问题
如下:
1. 真溢出
2. 假性溢出
二者的区别,在于队列中是否还有空间,因为队列是队头删除数据,队尾添加数据.
由此,引出循环队列的概念 而且所用到的队列大多数为循环队列
循环队列的思想
将队尾重新指向队头,以此循环,此外,还人为规定队尾指向一个空单元
循环队列的操作
1. 进队
2. 出队
3. 队是否为满
4. 队是否为空
5. 求队长
6. 求队列中的元素
7. 求队列中的空元素
设队列空间大小为L
进队
r = (r + 1) % L
出队
f = (f + 1) % L
队是否满
f == (r + 1) % L
队是否空
f = = r
求队长
L = (r - f + L)% L
求队中空元素
空元素 =(f - r + L)% L
如果队中空元素算出为1的话,说明队列是满的
链队列的操作思想
1. 入队
2. 出队
出队
1. front = front -> next
2. free(p)
相关代码 实操课补充完整