因为链表中唯一能够找到节点的办法是使用上一个节点的指针,所以如果我们将某个节点直接删去,这个节点所指向的节点和它之后的所有节点都没有办法再找到了。为了解决这个问题,一般采取这样的方法:记录下要删除的节点之前的那个节点,在删除节点之前,把这个节点的指针指向要删除的那个节点的指针指向的节点。比如现在要删除图1.3所示链表中的节点t,先找到它之前的节点p,在删除t之前将p的指针指向节点c,然后删除t,这样在删除t之前,就已经把t从链表中剔除出来了,不会影响之后的节点。
图1.3
参考代码如下,其中第7行,表示将括号内指针指向的内存空间释放。记住,用new动态开辟的内存空间,一定要用delete()释放;否则,即便程序运行结束,这部分内存空间仍然不会被操作系统回收,从而成为被白白浪费掉的“内存垃圾”,这种现象称为“内存泄漏”。