单链表的整表删除
其实就是在内存中将它释放掉,以便于留出空间给其他程序或软件使用;
算法思路:
-
声明一个结点p和q;
-
将第一个结点赋值给p;
-
循环:
-
将下一个结点赋值给p;
-
释放p;
-
将q赋值给p。
q变量有没有存在的必要?如果直接写free(p); p=p->next会带来什么问题?
******p是一个结点,它除了数据域,还有指针域,在free(p)时,其实是在对它整个结点进行删除和内存释放的工作。
/*初始条件:顺序线性表L已存在,操作结果:将L重置为空表*/
Status ClearList(LinkList *L)
{
LinkList p,q;
p = L->next;
while(p)
{
q = p->next;
free(p);
p = q;
}
L->next = NULL;
return OK;
-