如何使用递归删除循环双向链接的 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);
        }
    }
}