C语言--链表的销毁


                  链表销毁的基本思想


上次说了链表的构建,现在呢链表的销毁,他要是销毁,必须释放所有成员的内存

空间,现在一个问题摆在面前,到我们是从前往后删,还是从后往前删?

如果从后往前删,我们先要用指针指向最后一个结构体的前驱结点的next的值,修改

前驱结点的next的值为空,然后用指针释放最后一个结构体的空间,但是这里最后一

个结构体的前驱结点的next还得你写程序判断,相对从前往后删来说比较麻烦,所以

我们用的是从前往后删。





具体步骤


先让p指向,头结点后面那个第一个有效节点。  (红色箭头的p


然后把头结点的next值修改成,现在第一个有效节点的next成员的值(蓝色的箭头


然后再释放p,这样不会使链表中途断开,一直删完。当删到最后一个时,head->next变为NULL,销毁正式结束。


                              程序的实现


void destroy(point *head)
{
point *p;
while (head->next)
{
p = head->next;
head->next = p->next;
free(p);
}
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值