| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1412 人关注过本帖
标题:[原创]链表的排序实现
取消只看楼主 加入收藏
韦应贵
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-4-30
收藏
 问题点数:0 回复次数:2 
[原创]链表的排序实现

请那位高人看看我的这个链表排序,下面我以蓝色标出的地方运行出错.
出现的错误是:相加后的结果会再加一次,这是怎么回事呀
void sort(struct term *La)
{ struct term *p,*q,*s,*r;
for(p=La->next;p;p=p->next)
{ for(q=p->next;q;q=q->next)
{if(p->expn>q->expn)
{s=(struct term*)malloc(sizeof(struct term));
s->coef=q->coef;
s->expn=q->expn;
s->next=NULL;
q->coef=p->coef;
q->expn=p->expn;
p->coef=s->coef;
p->expn=s->expn;}
else
if(p->expn==q->expn)
{s=(struct term*)malloc(sizeof(struct term));
s->coef=p->coef+q->coef;
s->expn=q->expn;
s->next=NULL;
r->next=(struct term*)malloc(sizeof(struct term));
r->coef=p->coef;
r->expn=p->expn;
r->next=NULL;
free(r);
p->coef=s->coef;
p->expn=s->expn;
free(s);
}
}
}

搜索更多相关主题的帖子: 链表 
2006-05-07 17:31
韦应贵
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-4-30
收藏
得分:0 
如果我把以上程序的 else
if(p->expn==q->expn)
{s=(struct term*)malloc(sizeof(struct term));
s->coef=p->coef+q->coef;
s->expn=q->expn;
s->next=NULL;
r->next=(struct term*)malloc(sizeof(struct term));
r->coef=p->coef;
r->expn=p->expn;
r->next=NULL;
free(r);
p->coef=s->coef;
p->expn=s->expn;
free(s);
去掉,它就会正确.我用的S结点只是个临时结点,做交换数据用的.
2006-05-07 22:11
韦应贵
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-4-30
收藏
得分:0 
但是不用临时结点时,改变链表关系,出来的结果和这个是一样的,那么是你的算法出错了?楼的大哥,你能改改吗?
2006-05-08 21:02
快速回复:[原创]链表的排序实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016203 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved