1.队列的顺序表示
1)C语言的描述
初始化建空对列时,令front=rear=0,每当插入新的队尾元素时,“尾指针增1”;每当删除队列头元素时,“头指针增1”。因此,在非空队列中,头指针始终指向队列头元素,而尾指针始终指向队列尾元素的下一位置,如图所示。
2)存在问题
假设当前为队列分配的最大空间为6,则当队列处于图3.12(d)的状态时不可再继续插入新的队尾元素,否则会因数组越界而遭致程序代码被破坏。然而此时又不宜如顺序栈那样,进行存储再分配扩大数组空间,因为队列的实际存储空间未占满。一个巧妙的办法是将顺序队列臆造为一个环状空间,称之为循环队列。
2.循环队列的存储结构
#define MAXQSIZE 100
typedef struct
{
QElemType *base;
int front;
int rear;
}SqQueue;