一道关于链表的算法题目
void Del_X_3(LinkList &L, int x){LinkList p;
if(L == NULL){
return;
}
if(L->data == x){
p = L;
L = L->next;
delete p;
Del_X_3(L, x);
}
else{
Del_X_3(L->next, x);
}
}
为何用这种递归的方式对链表的元素进行删除不会断链啊
我总感觉直接删除p之后就会造成断链
有没有大佬可以解释一下啊
万分感谢 本帖最后由 yuxijian2020 于 2021-3-25 10:15 编辑
void Del_X_3(LinkList &L, int x){
LinkList p;
if(L == NULL){
return;
}
if(L->data == x){
p = L;
L = L->next;
delete p;
Del_X_3(L, x); //递归返回时,跳到下面else里
}
else{
Del_X_3(L->next, x);//跳到这里后相当于L = L-> next
}
} yuxijian2020 发表于 2021-3-25 09:20
能讲的再详细一点吗,看不太懂{:5_100:},我主要是不咋知道为啥直接删除p之后不会造成断链,如果直接删除p之后,我觉得他的前一个元素就无法连接到这个元素的下一个元素了,谢谢老哥。
页:
[1]