一、相关概念
1.队列是一种运算受限的线性表。在这种线性表上,插入限定在表的某一端进行,删除限定在表的另一端进行。允许插入的一端称为队尾,允许删除的一端称为队头。
特点:队列中数据元素的入队和出队过程是按照“先进先出” 的原则进行的。因此,队列又称为“先进先出”的线性表,简称FIFO表。
![](https://img.haomeiwen.com/i4744727/0ce2f855d7c3dabc.jpg)
2.双端队列
![](https://img.haomeiwen.com/i4744727/61d34e6db7b815ac.jpg)
3.链队列:用链表表示的队列(队列的链式存储结构),是限制仅在表头删除和表尾插入的单链表。
一个链队列由一个头指针和一个尾指针唯一确定。 空队列的判定条件就成为头指针和尾指针都指向头结点。
![](https://img.haomeiwen.com/i4744727/28afe58317ffe94a.jpg)
4.循环队列
![](https://img.haomeiwen.com/i4744727/aa50373816901fd5.jpg)
![](https://img.haomeiwen.com/i4744727/5dbbd7234d7e8d77.jpg)
然而,当到达如图中d的情形时,队列形式上便满了,可实际却没有。于是便有了循环队列:将顺序队列的存储区假想为一个环状的空间。
![](https://img.haomeiwen.com/i4744727/d78a2d3e05a8a135.jpg)
此时,解决方法有两种:
(1)、另设一个布尔变量以区别队列的空和满;
(2)、少用一个元素的空间,约定入队前,测试尾指针在循环意义下加 1 后是否等于头指针,若相等则认为队满;
网友评论