| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 520 人关注过本帖
标题:c程序中连表的排序问题?
只看楼主 加入收藏
bbw2008
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-3-28
收藏
 问题点数:0 回复次数:6 
c程序中连表的排序问题?

[求助]急救关于连表的排序?
希望大哥大姐,不吝赐教。小弟在次谢过。

struct student
{
char name[8];
long num;
int math_score;
int pro_score;
int total_score;
struct student *next;
};

以下是我写的连表中以数学成绩的排序算法请大家帮我看一看。如果你有更好的方法,不吝赐教。小弟再次谢过。

我的基本思路是先将一个连表里的所有内容装到结构体数组中,然后对结构体数组中按数学成绩排序(冒泡法),最后再将结构体数组中的所有内容装到连表中去。
struct student a[100];/*定义一个结构体数组*/
struct student *p;
int j;
int i;
char name1[8];
long num1;
int math_score1;
int pro_score1;
int total_score1;
if(n==0)printf("this head is empty\n");
else
{
p=head;
for(i=1;i<=n;i++,p++)
{
a[i].num=p->num;
a[i].math_score=p->math_score;
a[i].pro_score=p->pro_score;
a[i].total_score=p->total_score;
strcpy(a[i].name,p->name);
}
for(i=1;i<n;i++)
for(j=i+1;j<n-i;j++)
{
if(a[i].math_score<a[j].math_score)
{
strcpy(name1,a[i].name);
num1=a[i].num;
math_score1=a[i].math_score;
pro_score1=a[i].pro_score;
total_score1=a[i].total_score;

strcpy(a[i].name,a[j].name);
a[i].num=a[j].num;
a[i].math_score=a[j].math_score;
a[i].pro_score=a[j].pro_score;
a[i].total_score=a[j].total_score;

strcpy(a[j].name,name1);
a[j].num=num1;
a[j].math_score=math_score1;
a[j].pro_score=pro_score1;
a[j].total_score=total_score1;
}
}
p=head;
for(i=1;i<=n;i++,p++)
{
p->num=a[i].num;
strcpy(p->name,a[i].name);
p->math_score=a[i].math_score;
p->pro_score=a[i].pro_score;
p->total_score=a[i].total_score;
}
}
for(i=1;i<=n;i++) /*以下是我用来检查次段程序的*/
printf("%ld,%s,%d,%d,%d\n",a[i].num,a[i].name,a[i].math_score,a[i].pro_score,a[i].total_score);

2006-05-26 23:54
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
论坛 上!

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-26 23:58
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
论坛 GO.!

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-26 23:59
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
楼主,不是我不帮你,别人不让帮啊,其实我心地非常善良,乐意帮助人,雷峰是的的长用词,但乔安山开车撞我啊,我受不了啊

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-27 00:19
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
定义一个元素,先全部删除,然后再把其他元素加上

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-27 00:21
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

LZ的法子实在不可恭维.那样还不如直接用数组

这有 论坛和feng1256讨论的.去参考吧!

http://www.bc-cn.net/bbs/dispbbs.asp?boardID=5&ID=64206&page=10


这个是冒泡的..

http://www.bc-cn.net/bbs/dispbbs.asp?boardID=5&ID=62225&page=1

[此贴子已经被作者于2006-5-27 3:08:49编辑过]


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-27 02:48
bbw2008
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-3-28
收藏
得分:0 

谢谢

2006-05-28 20:56
快速回复:c程序中连表的排序问题?
数据加载中...
 
   



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

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