struct Node* Dequeue(struct Queue *queue)
{
struct Node *temp = queue->front;
if (temp == NULL)
{
printf("Nothing to delete");
return temp;
}
else if (temp->next == NULL)
{
free(temp);
queue->front = NULL;
queue->rear = NULL;
printf("Successfully delete.");
return temp;
}
else
{
queue->rear = queue->rear->next;
free(temp);
printf("Successfully delete.");
return temp;
}
}
当我在main()函数中打印已删除节点的数据时,它似乎输出一个随机数,这里我的错误是什么?有人请帮忙。
答案 0 :(得分:2)
您同时是free
和return
节点。如果要释放节点,请不要将其返回。如果要返回节点,请不要释放它。就像现在一样,在释放节点之前,您将返回指向节点所在位置的指针。这有什么用?