数据结构 运动会11级软件工程Word格式文档下载.docx
《数据结构 运动会11级软件工程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构 运动会11级软件工程Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
/*链域指向链表中第一个结点*/
}ITEM;
intz;
/*项目总数*/
ITEMa[MAX];
}ALLitems;
typedefstructnode2{
/*该学校获奖的项目*/
structnode2*next;
}Items;
intscore;
/*学校总分*/
intboys;
/*男团体总分*/
intgirls;
/*女团体总分*/
Items*firstitem;
/*链域指向链表中第一个获奖项目的结点*/
}SCHNode;
intn;
/*学校总数*/
SCHNodeb[MAX];
}ALLNode;
ALLitems*g1;
ALLNode*g2;
voidfunct1(ALLitems*g1,ALLNode*g2)/*输入各个项目成绩*/
{Schools*p1;
Items*p2;
inti,j,k,m,w,h,x;
p1=(Schools*)malloc(sizeof(Schools));
//添加的……
p2=(Items*)malloc(sizeof(Items));
if(!
p1||!
p2)
exit
(1);
//……添加的
printf("
\n******输入各个项目信息******\n\n"
);
输入男子项目总数m:
"
scanf("
%d"
&
m);
if(m<
0||m>
20)
{printf("
输入有误,m是20以内的整数,请重新输入:
}
输入女子项目总数w:
w);
if(w<
0||w>
{printf("
输入有误,w是20以内的整数,请重新输入:
输入参加运动会的学校总数n:
g2->
n);
if(g2->
n<
0||g2->
n>
输入有误,n是20以内的整数,请重新输入:
g1->
z=m+w;
则项目编号为男子1-%d,女子%d-%d"
m,m+1,g1->
z);
\n\n****记录运动会成绩****"
\n\n(输入0标志结束)\n"
for(k=1;
k<
=g1->
z;
k++)/*对两个邻接表置初态*/
{g1->
a[k].item=k;
a[k].firstschool=NULL;
=g2->
n;
k++)
{g2->
b[k].school=k;
g2->
b[k].firstitem=0;
b[k].score=0;
b[k].boys=0;
b[k].girls=0;
}
b[0].score=0;
b[0].boys=0;
b[0].girls=0;
while(i!
=0)
\n项目:
i);
if(i!
1.前三名2.前五名\n"
请选择:
j);
if(j!
=1&
&
j!
=2)
输入有误,请重新选择:
if(j==1)/*该项目只有前三名时执行此语句*/
{h=3;
do{printf("
第%d名:
学校(学校编号为数字)"
h);
x);
//p1=(Schools*)malloc(sizeof(Schools));
p1->
school=x;
//p2=(Items*)malloc(sizeof(Items));
p2->
item=i;
if(h==3)p2->
record=p1->
record=2;
if(h==2)p2->
record=3;
if(h==1)p2->
record=5;
next=g1->
a[i].firstschool;
a[i].firstschool=p1;
next=g2->
b[x].firstitem;
b[x].firstitem=p2;
b[x].score=g2->
b[x].score+p2->
record;
/*累计总分*/
if(i<
=m)g2->
b[x].boys=g2->
b[x].boys+p2->
/*累计男团体总分*/
elseg2->
b[x].girls=g2->
b[x].girls+p2->
/*累计女团体总分*/
h--;
}while(x!
=0&
h!
=0);
if(j==2)/*该项目有前五名时执行此语句*/
{h=5;
第%d名:
if(h==5)p2->
record=1;
if(h==4)p2->
record=7;
}
voidsave()/*存储数据文件*/
{FILE*fp1,*fp2;
fp1=(FILE*)malloc(sizeof(FILE));
fp2=(FILE*)malloc(sizeof(FILE));
if((fp1=fopen("
sports1"
"
wb"
))==NULL)
cannotopenfile.\n"
return;
if(fwrite(g1,sizeof(ALLitems),1,fp1)!
=1)
filewriteerror.\n"
fclose(fp1);
if((fp2=fopen("
sports2"
if(fwrite(g2,sizeof(ALLNode),1,fp2)!
=1)
fclose(fp2);
voidfunct2(ALLNode*g2)/*输出各学校总分*/
{intk;
\n\n******输出各学校总分******\n"
学校编号\t总分\n"
%d\t\t\t%d\n"
k,g2->
b[k].score);
\n"
system("
pause"
按任意键返回主菜单......"
getchar();
voidfunct3(ALLNode*g2)/*按学校编号排序输出*/
{
intk;
\n\n******按学校编号排序输出******\n"
学校编号\t\t\t获奖情况\n"
k);
//printf("
输入要查询的xuexiao编号:
\t\t\t\t\t\t%d\t"
k);
p2=g2->
b[k].firstitem;
while(p2!
=NULL)
项目%d:
得%d分"
p2->
item,p2->
record);
p2=p2->
next;
按任意键返回主菜单......"
voidfunct4(ALLNode*g2)/*按学校总分排序输出*/
{inti,j,k;
Items*p2;
pri