用递归方法删除链表中所有值为x的结点
void Delete_x(Linklist &L,int x){
LNode *p;
if(L==NULL)return;
if(L->data==x){
p=L;
L=L->next;
free(p);
Delete_X(L,x);
}
else Delete_x(L->next,x);
}
如果不是递归方法,直接free掉,当然会导致断链,但是此处的L=L->next,实质上是L->next=L->next->next
图示为
此时的链表已经是更新了,free掉也就对链表没影响了