gpt4 book ai didi

c - 在链表中,将最后一个节点与下一个元素进行比较会导致段错误吗?

转载 作者:行者123 更新时间:2023-11-30 17:21:29 25 4
gpt4 key购买 nike

我正在编写代码以从排序链表中删除重复元素,在该链表中我将每个元素与下一个元素进行比较。

代码如下:

void removeDuplicates(struct node* head)
{
struct node* nextnext;
struct node* current=head;

if(current == NULL)
return;

while(current != NULL) //Give Segmentation Fault
{
if(current->data == current->next->data)
{
nextnext = current->next->next;
free(current->next);
current->next=nextnext;
}
else
{
current = current->next;
}

}
}

如果我只是将 while 循环从 while(current != NULL) 更改为 while(current->next != NULL),段错误就会消失。

当我在每一行之后打印列表时,它会在发生段错误之前打印所有内容直到最后。这是否意味着将最后一个节点与下一个元素进行比较会导致段错误?

最佳答案

段错误很可能是由访问current->next成员引起的(例如current->next->datacurrent->next->next),因为您没有检查 current->next 是否为 null。如果是,则对其数据成员的访问是内存违规。

关于c - 在链表中,将最后一个节点与下一个元素进行比较会导致段错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28283261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com