想请教一下大家:
题目:设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点。
答案:
递归退出时的l,不是你首次调用的l。此l非彼l
这里的l==NULL表示没有节点需要处理了,所以递归结束
。。。。你这样玩最后就形不成链表了,你把l 删掉了,l 之前的节点怎么连接l 之后的那个?
void del_x_list(LNode_t*l, int x)
{
if (l == NULL || l->next == NULL)
return;
LNode_t* p = l->next;
if (p->data == x) {
l->next = p->next;
free(p);
del_x_list(l, x);
} else {
l = p;
del_x_list(l, x);
}
}
参考下