数据结构(知识点碎片七)

144 阅读1分钟

九、队列

 (一)、逻辑结构

队列简称队,它也是一种操作受限的线性表,其限制为仅允许在表的一端进行插入操作,而在表的另一端进行删除操作。队列也称为先进先出表(不同于栈,出队的顺序只有一种)。

dd560fbe4e6a1d0d92784689a598d40.jpg 队列抽象数据类型=逻辑结构+基本运算(运算描述)

队列的几种基本运算如下:

image.png

(二)、存储结构

1.顺序队

采用顺序存储结构的队列称为顺序队。

9511fb6fac37c6e4cd87723a5960a60.jpg 9c8411ada43d0b12b22a604e6a5de36.jpg 队空的条件:q->front==q->rear。(初始时设置q->rear=q->front=-1)
队满的条件:q->rear==MaxSize-1(data数组的最大下标)。    
元素e的进队操作:先将rear增1,然后将元素e放在 data 数组的 rear位置
出队操作:先将front增1,然后取出 data 数组中 front 位置的元素。

919f1f233b938a2a36837523f9ec579.jpg 因为队满条件设置不合理导致队满条件成立而队列中仍然有空位置的情况称为假溢出

解决的方法是把data数组的前端和后端连接起来,形成一个环形数组,即把存储队列元素的数组从逻辑上看成一个环,称为环形队列或者循环队列 648103f5f091b8c5cac7b0d11da8304.jpg

2.链队

采用链式存储结构的队列称为链队。 25d21838f2231acebaaee7bc99a6b3a.jpg