5顺序队列和循环队列
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以下是队空的几种情况:
front rear
4 3
20 1
(a) 空队列
front=0 Rear=0
rear
front
4 3
0 2
1
(f) 出队3次(队空)
front=4 Rear=4
初 始 化 时 : front=rear=0 循 环 队 列 为 空 的 条 件 是 : front==rear
以下是队满的几种情况:
为了能够充分的使用数组中的存储空间,把数 组的前端和后端连接起来,形成一个环形的表,即 把存储队列元素的表从逻辑上看成一个环,成为循 环队列(Circular Queue)。
front rear
front
front
4 3
0 2
1
4 3
0 2
1
a
rear
rear
c
4 3
0 2
1
a
b
(a) 空队列 front
front rear
d c
4 3
0 2
wk.baidu.com
1
a
b
front=0 Rear=4
rear
a
d c
4 3
0 2
1
b
front=1 Rear=0
front front
d
c
4 3
0 2
1
a
b
rear
front=3
Rear=2
循 环 队 列 为 满 的 条 件 是 : front==(rear+1) % MaxSize
front=rear=-1
(a) 空队
abc de
front=-1
rear=4
(b) a,b,c,d,e入队
bc de
front=0
rear=4
(c) 出队1次
front=rear= (d) 出队4次 4
图3.12 队列操作
队满和队空的条件是什么?
队空:front==rear 队满:rear==Maxsize-1
rear
d c
4 3
0 2
1
a
b
(b) a入队列
rear
d c
4 3
20 1
b
(c) b,c入队列
rear
front front
4 3
0 2
1
(d) d入队列(队满) (e) 出队1次
(f) 出队3次(队空)
队 头 指 针 进 1 : front=(front+1)%MaxSize; 队 尾 指 针 进 1 : rear=(rear+1)%MaxSize;
第4节/顺序队列
3.4.1.队列的顺序存储结构-1
#define MaxSize n 队列可能达到的最大长度n
typedef struct
{ ElementType elem[MaxSize];
int front, rear;
/*队首、队尾指示器*/
} Queue;
3.4.1.队列的顺序存储结构-2
• 在表中,允许插入的一端称作“队尾”,允许删除的另一端称作 “队首”(或“队头”);
• 通常将元素插入队尾的操作称作为入队列(或入队),称删除 队首元素的操作为出队列(或出队)。
出队列
a1 a2 a3
队首
an 队尾
入队列
2.队列的存储结构
两种结构: (1) 顺序队列——采用顺序结构存储 (2) 链式队列——采用链式结构存储
第三章 栈和队列
——顺序队列和循环队列
• 生活中的栈与队列
• 栈和队列是特殊的线性表 •栈与队列的特征
• LIFO(Last In First Out) • FIFO(First In First Out)
第3节/队列
1.队列(Queue)的定义
• 队列简称为队,是限定只能在表的一端作插入运算、在另一端 作删除运算的线性表;
?
3.4.1.队列的顺序存储结构-3
bc de
front=0
rear=4
front=rear=4
当rear=MaxSize-1时,队列为满,如果再加入新元素, 就会产生"溢出"。
但是这种"溢出"并不是真正的溢出,在数组的前端还可 能有空位置,所以这是一种假溢出。
解决方法:循环队列
3.4.1.队列的顺序存储结构-4