我正在使用C制作循环队列,书中说还有其他方法可以检查队列是满还是空。 一个是像这样制作(Rear =(Rear + 1)%QueueSize)。这是基本的方式。 另一种是检查上次操作。如果最后一次操作是入队的,那么它就不会是空的,如果最后一次操作是出列的,那么它就不能满了。 但我不知道如何使用C
检查上一次操作int isEmpty_lastOP(QueueType *cQ) {
if (???) {
printf(" Circular Queue is empty! ");
return 1;
}
else return 0;
}
int isFull_lastOP(QueueType *cQ) {
if (???) {
printf(" Circular Queue is full! ");
return 1;
}
else return 0;
}
void enQueue_lastOP(QueueType *cQ, element item) {
if (isFull_lastOP(cQ)) return;
else {
cQ->rear = (cQ->rear + 1) % cQ_SIZE;
cQ->queue[cQ->rear] = item;
}
}
element deQueue_lastOP(QueueType *cQ) {
if (isEmpty_lastOP(cQ)) exit(1);
else {
cQ->front = (cQ->front + 1) % cQ_SIZE;
return cQ->queue[cQ->front];
}
}