我的出列功能无法正常工作,我的错误是什么?

时间:2015-09-29 22:22:00

标签: c

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()函数中打印已删除节点的数据时,它似乎输出一个随机数,这里我的错误是什么?有人请帮忙。

1 个答案:

答案 0 :(得分:2)

您同时是freereturn节点。如果要释放节点,请不要将其返回。如果要返回节点,请不要释放它。就像现在一样,在释放节点之前,您将返回指向节点所在位置的指针。这有什么用?