链表的结点也是动态分配的,如果在程序结束之前不释放内存,就会造成内存泄漏。因此,编写一个清除链表的函数就显得相当有必要。我们先来分析一下清除这个功能:
下面我们来写一下这个函数:(程序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;
}
- 我们必须知道对哪个链表进行操作,所以表头指针head是必须知道的,并且清除整个链表后要将其改为NULL。
- 类似于删除结点,我们还需要一个指针p来指向待删除结点。
- 类似于删除表头结点的操作,我们仍然要先连后断:先把表头指向头结点的后继,再删除头结点。
下面我们来写一下这个函数:(程序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;
}










