/* c3-4.h 队列的顺序存储结构(出队元素时不移动元素,只改变队头元素的位置) */
#define QUEUE_INIT_SIZE 10 /* 队列存储空间的初始分配量 */
#define QUEUE_INCREMENT 2 /* 队列存储空间的分配增量 */
typedef struct
{
QElemType *base; /* 初始化的动态分配存储空间 */
int front; /* 头指针,若队列不空,指向队列头元素 */
int rear; /* 尾指针,若队列不空,指向队列尾元素的下一个位置 */
int queuesize; /* 当前分配的存储容量(以sizeof(QElemType)为单位) */
}SqQueue2;
/* bo3-8.c 循环队列(存储结构由c3-4.h定义)的基本操作(4个) */
int QueueLength(SqQueue2 Q)
{ /* 返回Q的元素个数,即队列的长度 */
return(Q.rear-Q.front+Q.queuesize)%Q.queuesize;
}
void EnQueue(SqQueue2 *Q,QElemType e)
{ /* 插入元素e为Q的新的队尾元素 */
int i;
if(((*Q).rear+1)%(*Q).queuesize==(