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