gpt4 book ai didi

c - 从链表中删除一个元素

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

我在从给定链接列表中删除元素时遇到一些问题。这是我得到的:

void deleteElement(node *list)
{
node *currP, *prevP = NULL;

for (currP = list; currP != NULL; prevP = currP, currP = currP->next) {

if(currP->info.name[0] == 'A') { /* Found it. */
if (prevP == NULL) {
list = currP->next;
} else {
prevP->next = currP->next;
}

free(currP);
return;
}
}
printList(list);
}

以这种方式编写的 printList 函数会打印整个列表,就像什么都没有被删除一样。关于出了什么问题有什么想法吗?

最佳答案

第一:似乎没有找到要删除的元素。如果找到,return 语句将结束该函数,并且 printList(list) 函数将不会被调用。

第二:使用break跳出for循环,而不是return

第三:在您释放第一个元素的情况下,您的deleteElement()应该返回指向list的指针。然后,在函数内部,列表被设置为新的第一个元素,但如果您不返回新地址,您的列表只是一个已释放的元素,并且在下次调用该元素时可能会导致段错误。

关于c - 从链表中删除一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44273294/

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