4、队列
(1)队列的定义
- 和栈类似,队列(Queue)也是一种线性表,其特殊性在于队列的基本操作是线性表操作的子集,即队列是操作受限的线性表。
- 和栈相反的是,队列是一种先进先出(first in first out)的线性表,简称 FIFO ,它只允许在表的一端进行插入,而在另一端删除元素。在队列中允许插入的一端叫做队尾(rear),允许删除的一端叫做队头(front)。
- 假设栈 Q = ( a 1 , a 2 , . . . , a n ) Q = (a_1,a_2,...,a_n) Q=(a1,a2,...,an),且元素按照 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an 次序进栈,则称 a 1 a_1 a1 为队头元素, a n a_n an 为队尾元素。退出队列是也是按照这个次序依次退出。队列的示意图如下所示。
(2)队列的分类与实现
-
根据内存物理结构的不同,有顺序存储结构实现与链式存储结构实现,即顺序队列与链式队列。
-
特殊的是,由于顺序队列像顺序栈那样同样存在空间已满的状态,但是顺序栈只能有一端(栈顶)操作元素,使顺序栈很容易增设内存空间,而顺序队列尾进头出的特性,使其空间存在持续减少的状态,并且没有固定的基地址,很难实现存储空间的再分配,一个巧妙的办法是,臆造一个环状的空间,即循环队列。
-
List item
-
List item
(3)队列的应用
- 作业排队
- 离散事件模拟