(1)队列的定义:
操作系统和客服系统中,都应用了一种数据结构来实现先进先出的排队功能,这就是队列。
队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 队列是一种先进先出(First In First Out)的线性表,简称FIFO。
(2)队列的抽象数据类型
(3)循环队列
线性表有顺序存储和链式存储,队列作为一种特殊的线性表,也同样存在这两种存储方式。
1.队列顺序存储的不足。
假设一个队列有n个元素,则顺序存储的队列需要建立一个大于n的数组,并把队列的所有元素存储在数组的前n个单元,数组下标为0的一端即是队头。入队在队尾追加一个元素,不需要移动任何元素。出队在队头取出一个元素,后面的所有元素需要往前移动。
2.循环队列的定义:头尾相接的顺序存储结构称为循环队列。
队列满的条件是(rear+1)%QueueSize == front
计算队列长度公式(rear - front + QueueSize) % QueueSize
(4)队列的链式存储结构及实现
队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,我们把它简称链队列。
将队头指针指向链表队列的头结点,而队尾指针指向终端结点。
空队列时,front和rear都指向头结点。
队列的链式存储结构--入队操作
队列的链式存储结构--出队操作