1.3.4 销毁一个链表

1.3.4 销毁一个链表

在链表使用完毕后建议销毁它,因为链表本身会占用内存空间。如果一个系统中使用很多的链表,而使用完毕后又不及时地销毁它,那么这些垃圾空间积累过多,最终可能导致内存的泄漏甚至程序的崩溃。因此应当养成及时销毁不用的链表的习惯。

下面给出销毁一个链表list的代码描述:

 
 
  1. void destroyLinkList(LinkList *list){
  2. LinkList p,q;
  3. p=*list;
  4. while(p){
  5. q=p->next;
  6. free(p);
  7. p=q;
  8. }
  9. *list=NULL;
  10. }

函数destroyLinkList()的作用是销毁一个链表list,它包括以下步骤。

(1)首先将*list的内容赋值给p,这样p也指向链表的第一个结点,成为了链表的表头。

(2)然后判断只要p不为空(NULL),就将p指向的下一个结点的指针(地址)赋值给q,并应用函数free()释放掉p所指向的结点,p再指向下一个结点。如此循环,直到链表为空为止。

(3)最后将*list的内容置为NULL,这样主函数中的链表list就为空了,防止了list变为野指针。而且链表在内存中也被完全地释放掉了。

                                                                                          http://book.51cto.com/art/201003/189240.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值