9-5 单链表的算法之删除节点

it2025-04-23  16

9.5.1 为什么要删除节点

(1)一直在强调,链表到底用来干嘛的? (2)有时候链表节点中的数据不想要了,因此要删掉这个节点。

9.5.2 删除节点的2个步骤

(1)第一步:找到要删除的节点;第二步:删除这个节点;

9.5.3 如何找到待删除的节点

(1)通过遍历来查找节点。从头指针+头节点开始,顺着链表依次将各个节点拿出来,按照一定的方法比对,找到我们要删除的那个节点。

9.5.4 如何删除一个节点

(1)待删除的节点不是尾节点的情况:首先把待删除的节点的前一个节点的pNext指针指向待删除的节点的后一个节点的首地址(这样就把这个节点从链表中摘出来了),然后再将这个摘出来的节点free掉即可。 (2)待删除的节点是尾节点的情况:首先把待删除的尾节点的前一个节点的pNext指针指向NULL(这时候就相当于原来尾节点前面的一个节点变成了新的尾节点),然后将摘出来的节点free掉。

9.5.5 注意堆内存的释放

(1)前面几节课我们写的代码最终都没有释放堆内存。当程序都结束了的情况下那些没有free的堆内存也被释放了。 (2)有时候我们的程序运行时间很久,这时候malloc的内存如果没有free会一直被占用直到你free释放它或者整个程序终止。

最新回复(0)