数据结构之队列

来源:互联网 发布:sql server个人版安装 编辑:程序博客网 时间:2024/06/05 16:53

队列,是一种先进先出的线性表结构。它只允许在表的前端(队头)进行删除操作,在表的后端(队尾)进行插入操作。队列中无元素时成为空队列。

队列的两种形式:

1.顺序队列:队列的顺序存储结构称为顺序队列,顺序队列实际上是运算受限的线性表。顺序队列用一个向量空间来存放当前队列中的元素。由于队列的队头和队尾的位置是变化的,设置两个指针front和rear分别指示队头元素和队尾元素在向量空间中的位置,它们的初值在队列初始化时均置为0。插入新元素时rear+1,删除元素时front+1并返回被删除的元素。由于入队和出队操作中,头尾指针只增加不减小,致使被删元素的空间永远无法重新利用。当队列中实际的元素个数远远小于向量空间的规模时,也可能由于尾指针已超越向量空间的上界而不能做入队操作。该现象称为"假上溢"现象,这是顺序队列的主要缺点。

2.循环队列(环形队列):将队列的向量空间想象为一个首尾相接的圆环,存储在其中的队列称为循环队列。循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只

不过头尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。这种操作方法可以用取余运算实现:i=(i+1)% QueueCapacity,大多数情况下都使用循环队列。

例:环形队列的C++实现


0 0