gpt4 book ai didi

c - 在链表中获取段错误

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:01 24 4
gpt4 key购买 nike

使用此代码删除在处理列表开始时创建的重复值但是在使用这段代码时出现段失败的错误,否则程序运行良好。

void remove_duplicate(){
q = start; //list start has already been created
while(q->next){
q=q->next;
if(q->id==q->next->id){ //removing duplicate values
q->next->prev = q->prev;
q->prev->next = q->next;
}
}
}

最佳答案

当您是列表中的倒数第二个节点时,其中 q->next->next 是空指针,然后您进入循环体(因为 q->next 不是NULL),直接让q指向最后一个节点。因此,当您下次使用 q->next 时,您将取消引用一个 NULL 指针并具有未定义的行为

改变语句的顺序,将 q = q->next 赋值放在最后。

或者使用 for 循环代替:

for (q = start; q->next != NULL; q = q->next){
if ...
}

关于c - 在链表中获取段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39913378/

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