队列的定义
- 一、队列的定义和特点
- 二、队列的抽象数据类型定义
- 三、例子
一、队列的定义和特点
队列 (queue) 是一种 先进先出(First In First Out, FIFO) 的线性表。它只允许在表的一端进行插入,而在另一端删除元素。这和日常生活中的排队是一致的,最早进入队列的元素最早离开。
在队列中,允许插入的一端称为队尾(rear), 允许 删除的一端则称为队头(front)。
假设队列为quene = (a1, a2, …,an), 那么, a1 就是队头元素, an 则是队尾元素。队列中的元素是按照 a1,a2,…,an的顺序进入的,退出队列也只能按照这个次序依次退出, 出队列 入队列 就是说,只有在 a1,a2, …,a~n -I~都离开队列之后, an 才能退出队列。
二、队列的抽象数据类型定义
这个Q其实就是 一种数据类型哈,下面就是这个数据结构具有的一些功能:
函数 | 初始条件 | 功能 |
---|---|---|
InitQueue (&Q) | - - | 构造一个空队列Q。 |
Des t royQueue (&Q) | 队列Q已存在。 | 队列Q被销毁, 不再存在。 |
ClearQueue (&Q) | 队列Q巳存在。 | 将Q清为空队列。 |
QueueEmpty (Q) | 队列Q已存在。 | 若Q为空队列,则返回true, 否则返回false。 |
QueueLength(Q) | 队列Q已存在。 | 返回Q的元素个数,即队列的长度。 |
GetHead(Q} | Q为非空队列。 | 返回Q的队头元素。 |
EnQueue (&Q, e} | 队列Q已存在。 | 插入元素e为Q的新的队尾元素。 |
DeQueue(&Q, &e) | Q为非空队列。 | 删除Q的队头元素,并用e 返回其值。 |
QueueTr aver se(Q) | Q巳存在且非空。 | 从队头到队尾,依次对Q的每个数据元素访问 |
三、例子
就比如在发送数据的时候,我们数据量很大,一次性是发不完的,因为出口数据量是有限制的,那我们只能把数据放在一个队列里,按照时间顺序排队发送,这种情况下,可能还具有优先级,队列里总是满的,也可以当做一个缓冲区去发,就像港口出货一样,按照时间排着队出货。