我正在尝试从已排序的链接列表中删除重复的节点。我使用的代码是 -
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)
语句,除此之外我觉得一切都很好,但上面的代码不起作用。
逻辑中是否有任何问题,因为我在网上看到了类似的代码,但有一个额外的指针?
提前致谢。
答案 0 :(得分:1)
if(var == ptr->next->data)
应该是
if (ptr->next != NULL && var == ptr->next->data)
在代码中不保证下一个指针不为空,