gpt4 book ai didi

c - 删除节点,链表不起作用

转载 作者:行者123 更新时间:2023-11-30 15:48:55 28 4
gpt4 key购买 nike

我不知道如何正确删除和重组节点。有人可以解释我做错了什么以及如何解决它吗?

我尝试阅读其他帖子,但找不到与我的帖子相比的。

printf("Enter index number of person to be deleted=\n");
scanf("%d", &index_del);
t = head;
while(t->index != index_del)
{
t = t->next;
}
t1 = t->next;
t->next = t1->next; ////////////////////breaks here somewhere
free(t1);
break;

最佳答案

struct node *tmp, **pp;
int index_del;

scanf("%d", &index_del);

for (pp = &head; *pp; )
if ((*pp)->index != index_del) {pp = &(*pp)->next; continue; }
tmp = *pp;
*pp = tmp->next;
free(tmp);
}
  • 这将删除该节点,即使它位于列表的头部
  • 它还会删除值为 index_del 的多个节点(如果存在)

技巧就在这里:唯一需要更改的是指向要删除的节点的指针。这可以是列表外部的 head 指针,也可以是其中之一列表中的 ->next 指针。

关于c - 删除节点,链表不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16569636/

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