设有一批数据,具体如下:
学号 |
姓名 |
性别 |
英语 |
数学 |
导论 |
合计 |
平均 |
93101 |
Cai |
M |
75 |
85 |
80 |
|
|
93103 |
Du |
M |
78 |
66 |
77 |
|
|
94104 |
Fan |
F |
72 |
68 |
81 |
|
|
93105 |
Feng |
F |
70 |
85 |
75 |
|
|
93106 |
Gao |
F |
70 |
56 |
68 |
|
|
93107 |
He |
M |
85 |
51 |
72 |
|
|
93110 |
Jia |
F |
81 |
75 |
68 |
|
|
93112 |
Jiang |
M |
87 |
78 |
81 |
|
|
93113 |
Ke |
M |
61 |
71 |
75 |
|
|
93115 |
Ma |
M |
59 |
62 |
51 |
|
|
93120 |
Si |
F |
40 |
71 |
68 |
|
|
93122 |
Wan |
F |
81 |
63 |
73 |
|
|
请按下列要求完成:
1. 设计一种结构,创建一个单链表,按表中的顺序将每个学生的数据保存到该链表的每个结点中;
2. 计算每个学生的合计和平均成绩,并保存到对应结点中;
3. 依次输出该链表中每个学生的各项数据;
4. 重新建立一个新的有序链表,根据原链表中每个学生的合计或平均成绩,从高到低依次排列,若合计或平均成绩相等则以学号从小到大进行组织;
5. 依次输出该有序链表的数据。
具体格式:
1. 写出对应每一小题的算法,画出流程图;
2. 每一小题编写一个函数加以实现对应的功能;
通过主函数实现对各部分的调用。
请教那为大虾,帮助解决。小弟,实属困难.....
----------------解决方案--------------------------------------------------------
呵呵~~~, 好象是简单的数据结构问题啊~~
----------------解决方案--------------------------------------------------------
没有写主函数,自己加上去吧!至于排序,我想着就不要我说了吧。
----------------解决方案--------------------------------------------------------
==================================================================
由于写得仓促,很多地方只写了关键,细节方面自己修改一下!
==================================================================
#include #include #include #define N 10
typedef struct node { long int num; char name[20]; char sex; float english; float maths; float daolun; float sum; float ave; struct node *llink,*rlink; }stud;
stud * creat(int n) { stud *p,*h,*s; int i; if((h=(stud *)malloc(sizeof(stud)))==NULL) { printf("不能分配内存空间!"); exit(0); } h->name[0]='\0'; h->llink=NULL; h->rlink=NULL; p=h; for(i=0;i〈n;i++) { if((s= (stud *) malloc(sizeof(stud)))==NULL) { printf("不能分配内存空间!"); exit(0); } p-〉rlink=s; printf("请输入第%d个人的学号",i+1); scanf("%l",s->num); printf("请输入第%d个人的姓名",i+1); scanf("%s",s->name); printf("请输入第%d个人的性别",i+1); scanf("%c",s->sex); printf("请输入第%d个人的英语成绩",i+1); scanf("%f",s->english); printf("请输入第%d个人的数学成绩",i+1); scanf("%f",s->maths); printf("请输入第%d个人的导轮成绩",i+1); scanf("%f",s->daolun); *(s->sun)=*(s->english)+*(s->maths)+*(s->daolun); *(s->ave)=*(s->sum)/3; s->llink=p; s->rlink=NULL; p=s; } h->llink=s; p->rlink=h; return(h); }
void print(stud *h) { int n; stud *p; p=h->rlink; printf("数据信息为:\n"); while(p!=h) { printf("%l \t",*(p->num)); printf("%s \t",&*(p->name)); printf("%c \t",*(p->sex)); printf("%f \t",*(p->english)); printf("%f \t",*(p->maths)); printf("%f \t",*(p->daolun)); printf("%f \t",*(p->sum)); printf("%f \t",*(p->ave)); p=p->rlink; printf("\n"); } }
----------------解决方案--------------------------------------------------------
小弟,在此暂且谢过;待小弟编译通过,定当重谢!!!!----每天泡上5小时!!!
----------------解决方案--------------------------------------------------------
楼上的大哥们,请问:
#include #include #include 这是什么意思啊?
----------------解决方案--------------------------------------------------------
包含文件嘛
回去多学学吧!
----------------解决方案--------------------------------------------------------
大哥,我还是做不了啊
是怎么回事啊??????
求救!!!!!!!!
----------------解决方案--------------------------------------------------------
一些细节方面还要修改一下,由于时间关系,你自己改吧.
----------------解决方案--------------------------------------------------------
斑竹,那个排序怎么搞啊!!
小弟还是没有搞好。
----------------解决方案--------------------------------------------------------