队列:只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
1.循环队列
队列的顺序储存结构:用数组存储队列,引入front指针指向队头元素,rear指针指向队尾元素的下一个位置,当front=rear时,为空队列,结构如下图所示。
当执行入队操作时,若数组尾部已满,而数组前部因有元素出队而有空位时,我们把新插入的元素从头开始入队,这样就类似于头尾相接的结构。
队列的这种头尾相接的顺序存储结构称为循环队列,如下图所示。
上面队列的定义中提到,当front=rear时,为空队列,而在循环队列中,队列满时,front也等于rear,将无法判断队满和空的情况。
一种办法是设置一个标志变量flag,当front=rear时,通过判断flag是0还是1来确定队列满空情况;
另一种方法是,在数组中只剩一个空闲单位时,定义为队列满,如下图所示。(本文程序采用这种办法)
</