Я создаю кольцевую очередь, используя 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];
}
}