C语言 递归调用清除链表?



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

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

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;
}
}

相关内容

  • 没有找到相关文章

最新更新