数据结构单链表的相关内容

想请教一下大家:
题目:设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点。
答案:

img

img


问题:
想问一下,这个里面,最后,l不是指向NULL?
是答案有问题,还是,我的理解有问题?

递归退出时的l,不是你首次调用的l。此l非彼l
这里的l==NULL表示没有节点需要处理了,所以递归结束

。。。。你这样玩最后就形不成链表了,你把l 删掉了,l 之前的节点怎么连接l 之后的那个?

void del_x_list(LNode_t*l, int x)
{
    if (l == NULL || l->next == NULL)
        return;
    
    LNode_t* p = l->next;
    
    if (p->data == x) {
        l->next = p->next;
        free(p);
        del_x_list(l, x);
    } else {
        l = p;
        del_x_list(l, x);
    }
}

参考下