gpt4 book ai didi

c - 删除整个链表

转载 作者:行者123 更新时间:2023-12-04 02:43:06 27 4
gpt4 key购买 nike

我正在使用链表并填充结构,但是当我删除整个结构并尝试打印链表的内容(应该为空)时,会出现一个数字列表。我知道这可能是内存问题。有关如何修复它的任何建议?

删除整个链表的代码:

void destroy(set_elem *head)
{
set_elem *current = head;
set_elem *next;

while (current != NULL)
{
next = current->next;
free(current);
current = next;
}
head = NULL;
}

最佳答案

虽然您的删除功能正常工作,但当您执行 head = NULL; 时,它不会将调用者的头部设置为 NULL。因为您只是在修改本地指针,这会导致您稍后尝试通过检查 head 的值来打印值的逻辑。 .

要修改原始指针,请将指针传递给 head并设置 *head=NULL;

void destroy(set_elem **head)
{
set_elem *current = *head;

/* rest is the same */

*head = NULL;
}

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

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