C语言数据结构中的链表问题

我想要达到的结果

list *clear_linklist(list *H)
{
list *k=H;
list *s;
if(k==NULL || k->pointer==NULL)
{
printf("链表不存在,或者为空");
return H;
}
while(k->pointer)
s=k;
k=k->pointer;
free(s);
}
k->date=NULL;
return H;
}

这段销毁链表的代码有问题吗请问? 注: list是typedef的结构体变量,H是链表的头,此链表的指针域为pointer,数据域为date。

你是不想销毁链表头节点吧?如果链表头结点也要销毁,你这个函数是没有实现的

修改如下,供参考:

list* clear_linklist(list* H)
{
    list* k = H;
    list* s;
    if (k == NULL) //|| k->pointer == NULL)
    {
        printf("链表不存在,或者为空");
        return H;
    }
    while (k) { //(k->pointer)
        s = k;
        k = k->pointer;
        free(s);
    }
    H = NULL; //k->date = NULL;
    return H;
}