gpt4 book ai didi

c - 从链表中删除节点(C)

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

void delete()
{
if(root == NULL)
{
printf("ERROR EMPTY LIST.\n");
}
else
{
printf("Enter value: ");
scanf("%d",&target);

if(root->data == target)
{
root = root->next;

}
else
{
struct node *ptr = root;
struct node *prev = NULL;

while(ptr != NULL)
{
if(ptr->data == target)
{
break;
}else
{
prev->next = ptr;
ptr = ptr->next;
}
}

prev->next = ptr->next;
}
}
}

程序在必须遍历链表时崩溃,我认为这与指针ptr和prev有关。我的逻辑是遍历列表,直到 ptr 遇到包含目标数据的节点。一旦它跳出循环并使 prev 指向 ptr->next 指向的节点。

最佳答案

如果目标数据不在根节点上,则转到第一个 while 迭代,然后使用 prev->next = ptr; 到达 else但 prev 仍然是 NULL ---> 程序崩溃。

只需使用调试器 - 您会很快发现此错误。

关于c - 从链表中删除节点(C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44098945/

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