理解
理解:
实现循环队列
队首Q->Front=(Q->Front+1)%Q->MaxSize;
队尾Q->Rear=(Q->Front+Q->Count)%Q->MaxSize;
删除操作:移动队首,计数器Count--;
插入操作:先执行计数器Count++,在执行向后移动队尾(这里也可以先移动队尾,后执行Count++,知识删除操作取出数的下标要变化);
注意:队首默认为0;
bool AddQ(Queue Q,ElementType X)
{
if(Q->MaxSize==Q->Count)
{
printf("Queue Full\n");
return false;
}
Q->Count++;
Q->Data[(Q->Front+Q->Count)%Q->MaxSize]=X;
return true;
}
ElementType DeleteQ(Queue Q)
{
if(Q->Count==0)
{
printf("Queue Empty\n");
return ERROR;
}
Q->Count--;
Q->Front=(Q->Front+1)%Q->MaxSize;
return Q->Data[Q->Front];
}