bsp; if(q- >rear != q->maxSize -1){
int i;
for(i = 0; i <= q->rear; i++){
q- >queue[i+q->maxSize] = q->queue[i];
}
q- >rear += q->maxSize; /* 队尾指针后移maxSize个位置 */
}
q- >maxSize = 2 * q->maxSize; /* 把队列空间大小修改为新的长度 */
return;
}
/* 1.初始化队列 */
void initQueue(struct queue *q, int ms)
{
/* 检查ms是否有效,若无效则退出运行 */
if(ms <= 0){
printf( "ms值非法! ");
exit(1);
}
q- >maxSize = ms; /* 置队列空间大小为ms */
/* 动态存储空间分配,若失败则退出运行 */
q- >queue = malloc(ms * sizeof(elemType));
if(!q- >queue){
printf( "内存空间分配失败! ");
exit(1);
}
q- >front = q->rear = 0; /* 初始置队列为空 */
return;
}
/* 2.向队列中插入元素x */
void enQueue(struct queue *q, elemType x)
{
/* 当队列满时进行动态生分配 */
if((q- >rear + 1) % q->maxSize == q->front){
againMalloc(q);
}
q- >rear = (q->rear + 1) % q->maxSize; /* 求出队尾的下一个位置 */
q- >queue[q->rear] = x; /* 把x的值赋给新的队尾 */
return;
}
/* 3.从队列中删除元素并返回 */
elemType outQueue(struct queue *q)
{
/* 若队列为空则终止运行 */
if(q- >front == q->rear){
pri