void Del_x(Linklist &L,int 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);
)
}
首先如果第一个点data就为x;那么直接删除,不存在断链问题;
直到发现不为x的点,
else语句调用
递归L->next
因为是引用,即在函数内对形参的修改直接作用于实参,如传入的是L->next (对应形参L),那么对形参L的操作度语句L = L->next; 对应到实参问来看即为L->next = L->next->next; 可以看出L = L->next;这句已经更改了链表结构,这个时候free§ (P = L->next) 跟原链表已经没有关系了
传入的参数会被赋值一个副本,此时函数内使用这个参数,实际上在使用一个副本,不会修改原始传入,但是用引用时修改的就是原始传入了~
const 引用的最大好处就是不产生副本, 而且不用担心被修改。
如果没有const, 该参数可以被修改。