设循环队列保存在数组Q[N]中,front和rear分别为队头和队尾指针,初始时front=rear=0,约定指针rear指向的

设循环队列保存在数组Q[N]中,front和rear分别为队头和队尾指针,初始时front=rear=0,约定指针rear指向的单元始终为空,请用C语言分别描述下列操作:(1)将数据元素x入队。(2)将队首元素出队,并保存到变量myData中。(3)计算队列中当前数据元素的个数,并保存到变量DLenth中。
【正确答案】:(1)数据元素X入队:
if((rear+1)%N==front)
printf("Queue overflow")
else{
Q[rear]=x;
rear=(rear+1)%N;
}
(2)队首元素出队并保存到变量myData.中:
if(rear==front)
printf(“Queue empty”)
else{
myData=Q[front];
front=(front+1)%N;
}
(3)当前队列长度
DLenth=(N+rear-front)%N
(或DLenth=(rear>=front)?rear-front:N+rear-front)