【正确答案】定义该循环队列的存储结构:
#define datatype char
#define MAXSIZE 100 /*队列的最大容量*/
typedef struct
{datatype data[MAXSIZE]; /*队列的存储空间*/
int rear,length;
}SEQQUEUE;
SEQQUEUE*q;
循环队列的队空条件是:q->length==0
循环队列的队满条件是:q->length==MAXSIZE
(1)入队
void Add_Queue(SEQQUEUE*q,datatype x)
{ if(q->length==MAXSIZE)/*队列满*/
printf("Queue full\n");
else
{ q->rear=(q->rear+1)/%MAXSIZE;
q->data[q->rear]=x;
q->length++;
}
}
(2)出队
dat atype Del_Queue(SEQQUEUE*q)
{datatype x;
int front;
if(q->length==0) /*队列为空*/
{printf("Queue empty\n");
x=NULL;)
else
{ front=(MAXSIZE+q->rear-q->length+1)/%MAXSIZE;/*计算头指针位置*/
x=q->data[front];
q->length--;)
return x;
}
【答案解析】