C中的循环链表

时间:2018-03-31 00:34:41

标签: c

如何删除单圆链表中的所有节点?这段代码是正确的吗?当我尝试它时,我没有得到代码块中的输出。这是什么错误?

void deleteall()
{

    struct node *temp1=head,*temp2;
    do
    {

        while(temp1->next!=head)
        {

            temp1=temp1->next;
        }
        temp2=head;
        head=head->next;
        temp1->next=head;
        free(temp2);
    }while(temp1!=head);
    head=NULL;
    free(temp1);
    printf("deleted successfully\n");
}

1 个答案:

答案 0 :(得分:2)

要删除单个循环链接列表,请从next的{​​{1}}开始,继续删除,直至找到head,然后删除列表中的head,像这样:

head