gpt4 book ai didi

c - 递归调用清除链表?

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

我正在寻找一种清除链接列表的解决方案,这就是我得到的。

我不确定如何完成此操作:

void clearRecursively(LIST **presentNode, LIST **endNode){

if (*presentNode == NULL)
return;

LIST *nextNode;

clearRecursively(&nextNode, endNode);

*presentNode = NULL;
*endNode = NULL;
}

最佳答案

您传递的指针不指向任何内容:clearRecursively(&nextNode, endNode);

除此之外,将指针分配给 NULL 不会删除它们所指向的内存 - free(POINTER_NAME) 就是用于此目的。

明确地说,我认为你的意思是删除 - 由于尚未提供完整的代码,这里有一种方法(例如目的),假设它是一个单链表:

 //THIS TRAVERSES DOWN THE LINKED-LIST AND THEN DELETES THAT LAST NODE
//RECURSIVELY IT DELETES THE ENTIRE LIST

void clear_recursively(LIST **head)
{
if(*head!=NULL)
{
clear_recursively(&((*head)->next));
free(*head);
*head=NULL;
}
}

只需传递head指针(指向第一个节点的指针)的地址即可完成。

如果明确您的意思只是将整个链接列表的数据字段设置为某个,那么:

 void clear_recursively(LIST *head)
{
if(head!=NULL)
{
clear_recursively(head->next);
head->data = //SOME VALUE;
}
}

关于c - 递归调用清除链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52452016/

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