q:设计递归算法,删除不带头节点的单链表l中所有值为x的节点
p:1.创建链表 头插法或者尾插法
头插法核心代码:
s->next=l->next;
l->next=s;
尾插法核心代码
r->next=s;
r=s;
2. 实现题目要求,递归删除
要删除的节点涉及到前面的那个节点,所以设置两指针,分别为pre和p,pre指向首节点
void del_x(LinkList &L,int x){
LNode *p,pre=L;
p=L->next;
while(p!=NULL){
if(p->data==x){
pre->next=p->next;//删除p
free(p);//释放空间
p=pre-next;
}else{
pre=p;
p=->next;}
}
}
学到了,释放空间后p还可以再参与程序