求大佬们解答一个数据结构的问题

代码:

void Del_x(LinkList &L,ElemType x){

    LNode *p;

    if(L==NULL){

          return;

    }

    if(L->data==x){

          p=L;

          L=L->next;

          free(p);

          Del_x(L,x);

    }

    else{

          Del_x(L->next,x);

    }

}

为什么在这里free(p)不会引起断链问题

 L=L->next;

这句后,链表已经跳过p了

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^