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