创建N个单向链表对它进行摧毁和清空操作

摧毁和清空的含义及区别

摧毁

是先销毁了链表的头,然后接着一个一个的把后面的销毁了,这样这个链表就不能再使用了,即把包括头的所有节点全部释放。

清空

是先保留了链表的头,然后把头后面的所有的都销毁,最后把头里指向下一个的指针设为空,这样就相当与清空了,但这个链表还在,还可以继续使用;即保留了头,后面的全部释放

区别:

清空是链表的头还在,可以继续插入节点;销毁就是链表没了,整个链表(包括头)的空间都被释放了,不能进行任何操作了。

摧毁链表实例

int destroy(struct node *head)
{
    struct node *p; //定义结构体指针
    if(head==NULL)//如果链表不存在则返回0
    {   
        return 0;
    }   
    while(head != 0)//如果存在则进行摧毁,直到head为空,所有节点被销毁
    {   
        p = head->next;//把head指向的下一个节点被P保存
        free(head);//释放掉head指向的节点
        head = p;//把P保存的节点被head保存
    }   

};

清空链表实例

int clear(struct node *head)
{    
    struct node *p;//定义结构体指针
    struct node *q; 
    if(head == 0)
    {   
        return 0;
    }   
    p = head->next;//把头节点的下一个节点被p保存
    while(p != 0)//当p存在时,进行清空操作
    {   
        q = p->next;//使q保存p指向的下一个节点
        free(p);//释放掉P里的内容
        p = q;//让p保存q指向的节点
    }   
    head->next = NULL;//当上面循环完成时,已经只有一个头结点存在,使head-         >next=NULL,表示链表结束
 };

下面是完整代码示例

发现一个vi编辑器的小技巧,:set nonumber可以删除代码前的序号


/*********************************************************************************
 *      Copyright:  (C) 2017 fanmaolin<[email protected]>
 *                  All rights reserved.
 *
 *       Filename:  make4.c
 *    Description:  This file 
 *                 
 *        Version:  1.0.0(08/05/2017)
 *         Author:  fanmaolin <[email protected]>
 *      ChangeLog:  1, Release initial version on "08/05/2017 07:24:41 AM"
 *                 
 ********************************************************************************/
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值