gpt4 book ai didi

c - 从列表中删除节点时出现问题

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

我在从单链表中删除节点时遇到问题。当尝试删除第一个节点时。它似乎失去了对列表其余部分的引用。有人可以帮忙吗?这就是所讨论的函数,它需要删除列表的头部和节点的板。

Car * removeCarFromList(Car * list,char plate[]){
Car * current = list;
Car * previous = NULL;
while (current != NULL){
if (strcmp(current->plate,plate)==0&& previous == NULL){
list = current -> next;
current -> next = NULL;
return current;
break;
} else if (strcmp(current->plate,plate)==0&& previous != NULL){
previous -> next = current -> next;
current -> next = NULL;
return current;
break;
}
previous = current;
current = current -> next;
}
return NULL;
}

最佳答案

如果您要从列表中删除第一个元素,那么您必须列出的任何指针现在都无效。当您设置list = current -> next;时list 的值是您的函数的本地值,它永远不会返回您的函数来更新您传递给函数作为列表开头的指针。

为了做你想做的事,你需要一个指向指针的指针。

Car * removeCarFromList(Car ** list,char plate[])然后将当前更改为:Car * current = *list;然后更改 list = current->next*list = current->next;

然后在调用函数时更改 removeCarFromlist(myPointer,....removeCarFromlist(&myPointer, ....

当第一个项目被删除时,这会将 myPointer 更改为指向列表中的下一个项目。

关于c - 从列表中删除节点时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40053075/

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