返回信息流代码如下:
//递归删除不带头结点的单链表L中所有值为x的结点
void DeleteX(LinkList l,int x){//LinkList为指针型
if(l==NULL)//递归出口
return;
LinkList p;
//LinkList m = l;
if(l->data==x){
p = l;
l = l->next;//这个步骤感觉有问题
free(p);
//showLink();
DeleteX(l,x);
}
else
//showLink();
DeleteX(l->next,x);
}
复习考研时遇到的,l=l->next;这句,按照c的语法,l虽是指针类型,但作为参数被传入,是不能直接对l进行修改吧,要修改l,应该是传入&l才对,是这样吧?
昨晚想了好久都没找到原因,书上明明说“因为l为引用,是直接对原链表进行操作,因此不会断链”,结果我debug发现已经断链了。。
这是一条镜像帖。来源:北邮人论坛 / cpp / #97963同步于 2018/7/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
这个递归有问题吧?(c语言)【已解决】
lt1103725556
2018/7/30镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
第一个结点为x,书上的意思是直接把头指针l指向第二个结点了,也就是说直接改了头指针的值。。
【 在 chenxiansf (影自南飞) 的大作中提到: 】
: 不带头结点,那第一个结点值就为x怎么办呢
多谢大佬指点,我去试试看[ema3]
【 在 Nroskill (Nroskill) 的大作中提到: 】
: LinkList &l, int x
: LinkList &p = l;