从已排序的链接列表中删除重复节点

时间:2018-03-07 15:12:29

标签: data-structures linked-list

我正在尝试从已排序的链接列表中删除重复的节点。我使用的代码是 -

Node* RemoveDuplicates(Node *head)
{
    struct Node *ptr = head;
    int var = ptr->data;

    while(ptr != NULL)
    {
        var = ptr->data;
        if(var == ptr->next->data)
        {
            ptr->next = ptr->next->next;

        else
            ptr = ptr->next;
    }
    return head;
}

忘记free(ptr)语句,除此之外我觉得一切都很好,但上面的代码不起作用。 逻辑中是否有任何问题,因为我在网上看到了类似的代码,但有一个额外的指针?

提前致谢。

1 个答案:

答案 0 :(得分:1)

if(var == ptr->next->data)

应该是

if (ptr->next != NULL && var == ptr->next->data)

在代码中不保证下一个指针不为空,