首页 > 编程 > C++ > 正文

C++教程:清除链表

2020-05-23 14:26:44
字体:
来源:转载
供稿:网友
链表的结点也是动态分配的,如果在程序结束之前不释放内存,就会造成内存泄漏。因此,编写一个清除链表的函数就显得相当有必要。我们先来分析一下清除这个功能:
  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;
}

至此,我们已经学习了链表的所有基本操作。下面来介绍一下数组存储和链表存储各自的优缺点。
C++教程:清除链表
虽然很多初学者都认为链表非常难以理解,但是只要掌握了插入删除结点时“先连后断”的原则和如何遍历整个链表,所有的问题就迎刃而解了。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表