C语言笔记
1. 在对链表进行整表删除操作时候,不能够直接free()。
因为p是一个结点,它本身包含两个域:数据域和指针域。在做free()的过程其实是对他整个结点进行删除和内存释放的过程。
q的作用是进行记录,以便于等当前结点释放后,把下一结点拿回来补充。
Status ClearList(LinkList *L)
{
LinkList p,q;
p = (*L)->next; /*p指向第一个结点*/
while(p) /*没到表尾*/
{
q=p->next;
free(p);
p=q;
}
(*L)->next=NULL; /*头结点指针域为空*/
return OK;
}
2.另有单个链表结点进行删除时:
删除链表结点时, 需要先找到该删除结点p,将其赋值给一个临时的temp结构变量,然后p结点的下一个结点赋值给p结点,最后释放temp结点所占用的内存。