数据结构日记之《队列的定义》

队列的定义

  • 一、队列的定义和特点
  • 二、队列的抽象数据类型定义
  • 三、例子

一、队列的定义和特点

队列 (queue) 是一种 先进先出(First In First Out, FIFO) 的线性表。它只允许在表的一端进行插入,而在另一端删除元素。这和日常生活中的排队是一致的,最早进入队列的元素最早离开。

在队列中,允许插入的一端称为队尾(rear), 允许 删除的一端则称为队头(front)。

假设队列为quene = (a1, a2, …,an), 那么, a1 就是队头元素, an 则是队尾元素。队列中的元素是按照 a1,a2,…,an的顺序进入的,退出队列也只能按照这个次序依次退出, 出队列 入队列 就是说,只有在 a1,a2, …,a~n -I~都离开队列之后, an 才能退出队列。

数据结构日记之《队列的定义》_第1张图片

二、队列的抽象数据类型定义

这个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的每个数据元素访问

三、例子

就比如在发送数据的时候,我们数据量很大,一次性是发不完的,因为出口数据量是有限制的,那我们只能把数据放在一个队列里,按照时间顺序排队发送,这种情况下,可能还具有优先级,队列里总是满的,也可以当做一个缓冲区去发,就像港口出货一样,按照时间排着队出货。

数据结构日记之《队列的定义》_第2张图片

你可能感兴趣的:(#,▶,数据结构,queue,队列,数据结构,c语言)