链表的结点也是动态分配的,如果在程序结束之前不释放内存,就会造成内存泄漏。因此,编写一个清除链表的函数就显得相当有必要。我们先来分析一下清除这个功能:
下面我们来写一下这个函数:(程序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;
}
至此,我们已经学习了链表的所有基本操作。下面来介绍一下数组存储和链表存储各自的优缺点。
虽然很多初学者都认为链表非常难以理解,但是只要掌握了插入删除结点时“先连后断”的原则和如何遍历整个链表,所有的问题就迎刃而解了。