如何使用递归删除循环双向链接的 iist?
How to remove circular doubly linked iist by using recursion?
我需要编写递归函数,它将通过使用递归从我的循环双向链表中删除所有元素,但我不知道该函数中的基本条件应该是哪个.
void remove_list(struct dll_node **node)
{
if(){
free(*node);
return;
}
if(*node){
remove_list(&(*node)->next);
free(*node);
}
}
你先破圈就好了
static int flag=0;
if (!flag){
(*node->prev)->next=NULL;
flag=1;
}
然后像普通双链表一样销毁它
您不必在递归函数中使用指向指针的指针:
void remove_list(struct dll_node * node)
{
if (node)
{
struct dll_node * next = node->next;
if (next)
{
node->next = NULL;
remove_list(next);
free(next);
}
}
}
我需要编写递归函数,它将通过使用递归从我的循环双向链表中删除所有元素,但我不知道该函数中的基本条件应该是哪个.
void remove_list(struct dll_node **node)
{
if(){
free(*node);
return;
}
if(*node){
remove_list(&(*node)->next);
free(*node);
}
}
你先破圈就好了
static int flag=0;
if (!flag){
(*node->prev)->next=NULL;
flag=1;
}
然后像普通双链表一样销毁它
您不必在递归函数中使用指向指针的指针:
void remove_list(struct dll_node * node)
{
if (node)
{
struct dll_node * next = node->next;
if (next)
{
node->next = NULL;
remove_list(next);
free(next);
}
}
}