|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 递归删除,求改错!
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
444
人关注过本帖
标题:
递归删除,求改错!
只看楼主
加入收藏
爱编聪聪
等 级:
论坛游民
帖 子:26
专家分:20
注 册:2013-9-16
结帖率:
100%
楼主
收藏
已结贴
√
问题点数:17 回复次数:8
递归删除,求改错!
删除 不带头结点 的单链表 中 数据域 为x的全部结点
用
递归
实现,求改错!!
void delete_linklist(linklist *L,int x)
{
linklist *p;
if(L==NULL)
return;
else if(L->data==x)
{
p=L;
L=L->next;
free(p);
delete_linklist(L,x);
}
else
delete_linklist(L->next,x);
}
搜索更多相关主题的帖子:
return
2013-11-10 13:31
举报帖子
使用道具
赠送鲜花
azzbcc
来 自:江西财经大学
等 级:
贵宾
威 望:
81
帖 子:3293
专家分:12919
注 册:2012-11-4
第
2
楼
收藏
得分:12
else if(L->data==x)
{
p=L;
L=L->next;
free(p);
delete_linklist(L,x);
}
这部分代码执行后,你把当前节点成功删除,但是该节点的前驱(假设存在)和后驱(假设存在)断了
比如说 1 2 3 4 5,要删除3,把3删除后,2 的next应该是 4 的,但你的代码没有这个实现
[fly]存在即是合理[/fly]
2013-11-10 14:08
举报帖子
使用道具
赠送鲜花
爱编聪聪
等 级:
论坛游民
帖 子:26
专家分:20
注 册:2013-9-16
第
3
楼
收藏
得分:0
回复 2楼 azzbcc
这个递归实现的就是一直判断首节点是否满足删除条件 如果满足,则删除首节点,如果不满足,则让 head->next作为参数,进行再次调用本函数,再次判断首节点是否满足删除条件,所以这个过程一直实现的是删除首节点,不就是
p=L;
L=L->next;
free(p);(删除首节点)吗?(L为首节点)
2013-11-10 14:55
举报帖子
使用道具
赠送鲜花
爱编聪聪
等 级:
论坛游民
帖 子:26
专家分:20
注 册:2013-9-16
第
4
楼
收藏
得分:0
回复 2楼 azzbcc
哦哦,我知道了,就是这错了,谢谢
2013-11-10 15:33
举报帖子
使用道具
赠送鲜花
爱编聪聪
等 级:
论坛游民
帖 子:26
专家分:20
注 册:2013-9-16
第
5
楼
收藏
得分:0
回复 2楼 azzbcc
版主,我是真写不对了,再指点我一下吧。。。。。。。。
2013-11-10 16:12
举报帖子
使用道具
赠送鲜花
azzbcc
来 自:江西财经大学
等 级:
贵宾
威 望:
81
帖 子:3293
专家分:12919
注 册:2012-11-4
第
6
楼
收藏
得分:5
有两种思路,一是把前驱的指针以参数形式添加到函数中;二就是当前节点不动,删除后驱
[fly]存在即是合理[/fly]
2013-11-10 22:38
举报帖子
使用道具
赠送鲜花
唐书豪
等 级:
论坛游民
帖 子:28
专家分:52
注 册:2013-5-10
第
7
楼
收藏
得分:0
可以给删除函数返回一个参数是链表的头结点,参数L改为head头结点,每一次调用都去从头遍历链表,然后删除节点的时候定义两个结点指针,1 2 3 4 5要删除3,这时pf->2,pd->3,
pf->next = pd->next;free(pd);
2013-11-10 23:07
举报帖子
使用道具
赠送鲜花
爱编聪聪
等 级:
论坛游民
帖 子:26
专家分:20
注 册:2013-9-16
第
8
楼
收藏
得分:0
回复 2楼 azzbcc
嗯嗯,我知道怎么改了,谢谢
2013-11-11 23:22
举报帖子
使用道具
赠送鲜花
请叫我α
等 级:
新手上路
帖 子:1
专家分:0
注 册:2013-11-12
第
9
楼
收藏
得分:0
我尝试按你的思路去修改,没成功,你传进去的节点始终作为了第一个节点,那么由于是单向链表,所以无法找到前节点。你可以把函数改为传三个参数的,待判断节点的前一个节点,待判断节点,以及要匹配的数值,这样就好写程序了,分为头结点和非头结点的两种情况来递归就行啦。
2013-11-12 13:10
举报帖子
使用道具
赠送鲜花
9
1/1页
1
快速回复:
递归删除,求改错!
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.023035 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved