单链表删除节点
单链表删除节点可以分为以下几种情况:
1. 删除单个节点:首先找到要删除的节点,然后根据节点的位置不同,进行不同的操作。如果节点不是尾节点,可以将待删除节点的前一个节点的pNext指向待删除节点的后一个节点的首地址,然后将摘出来的节点free掉。如果节点是尾节点,可以将待删除节点的前一个节点的pNext指针指向NULL,然后再将摘出来的节点free掉。
2. 删除连续的节点:首先找到要删除连续节点的第一个节点的前一个节点,然后找到要删除连续节点的最后一个节点的后一个节点,最后将第一步找到的节点指向第二步指向的节点。
需要注意的是,如果链表开在堆上,那么由于被删除的节点无法访问到,但是它也没被free掉,所以会导致内存泄漏。为了避免这个问题,可以将被删除的节点的指针返回给调用方,让调用方决定是否要free。
