您当前的位置:首页 > 计算机 > 编程开发 > VC/VC++

清除链表

时间:01-10来源:作者:点击数:

链表的结点也是动态分配的,如果在程序结束之前不释放内存,就会造成内存泄漏。因此,编写一个清除链表的函数就显得相当有必要。我们先来分析一下清除这个功能:

  1. 我们必须知道对哪个链表进行操作,所以表头指针head是必须知道的,并且清除整个链表后要将其改为NULL。
  2. 类似于删除结点,我们还需要一个指针p来指向待删除结点。
  3. 类似于删除表头结点的操作,我们仍然要先连后断:先把表头指向头结点的后继,再删除头结点。

下面我们来写一下这个函数:(程序9.6.5)

void destroy(node * &head)
{
   node *p;
   while (head!=NULL)//当还有头结点存在时
   {
      p=head;//头结点是待删除结点
      head=head->next;//先连
      delete p;//后断
   }
   cout <<"The link list has been deleted!" <<endl;
}

至此,我们已经学习了链表的所有基本操作。下面来介绍一下数组存储和链表存储各自的优缺点。

虽然很多初学者都认为链表非常难以理解,但是只要掌握了插入删除结点时“先连后断”的原则和如何遍历整个链表,所有的问题就迎刃而解了。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
    无相关信息
栏目更新
栏目热门