gpt4 book ai didi

C 当链表为空时删除链表的节点

转载 作者:行者123 更新时间:2023-11-30 16:27:20 25 4
gpt4 key购买 nike

我正在执行c中的管理链接列表的函数,但我在删除函数时遇到了问题。这只需要一个指向链表的指针和一个值,并删除具有该值的第一个节点。问题是,如果我传递一个空列表,就会出现段错误。有什么想法吗?

sll_node *sll_remove(sll_node *list, int search_value)
{
sll_node* head = list;
sll_node* delete = list->next;


if(head == NULL)
{
return list;
}

if(head != NULL && head->value == search_value)
{
list = head->next;
free(head);
return list;
}

while(delete)
{
if(search_value == delete->value)
{
head->next = delete->next;
free(delete);
return list;
}
head = head->next;
delete = delete->next;
}

return list;
}

最佳答案

在解除引用之前,您需要检查 list 是否为空

 sll_node *sll_remove(sll_node *list, int search_value)
{
if(!list){
return list;
}
sll_node* head = list;
sll_node* delete = list->next;


if(!head)
{
return list;
}

if(head && head->value == search_value)
{
list = head->next;
free(head);
return list;
}

while(delete)
{
if(search_value == delete->value)
{
head->next = delete->next;
free(delete);
return list;
}
head = head->next;
delete = delete->next;
}

return list;
}

关于C 当链表为空时删除链表的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52770984/

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