问题出在enqueue函数中的代码逻辑上。在enqueue函数中,将item赋值给queue->items,这是错误的。应该是将item存储在队列数组中的rear对应的位置。
修改enqueue函数如下:void enqueue(Queue* queue, int item){ if (queue->rear == MAX_SIZE - 1) { printf("队列已满,无法入队。\n"); } else { if (queue->front == -1) { queue->front = 0; } (queue->rear)++; queue->items[queue->rear] = item; }}
另外,在dequeue函数中,判断队列是否为空的条件有问题。应该是`if (queue->front == -1 || queue->front > queue->rear)`,而不是`if (queue->front == -1)`。
修改dequeue函数如下:int dequeue(Queue* queue){ if (queue->front == -1 || queue->front > queue->rear) { printf("队列为空,无法出队。\n"); return -1; } else { int item = queue->items[queue->front]; (queue->front)++; return item; }}
修改完成后,输出结果将与您预期一致。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 |