习题3.12 另类循环队列 (20point(s))
如果用一个循环数组表示队列,并且只设队列头指针Front,不设尾指针Rear,而是另设Count记录队列中元素个数。请编写算法实现队列的入队和出队操作。
Example:
bool AddQ( Queue Q, ElementType X )
{
if(Q->Count == Q->MaxSize) {
printf("Queue Full\n");
return false;
}
Q->Data[(Q->Front+Q->Count++)%Q->MaxSize] = X;
return true;
}
ElementType DeleteQ( Queue Q )
{
ElementType res;
if(Q->Count == 0) {
printf("Queue Empty\n");
return ERROR;
}
res = Q->Data[Q->Front];
Q->Front = (Q->Front+1) % Q->MaxSize;
Q->Count--;
return res;
}
思路:
利用 count 计算 rear