《(中央电大)数据结构实验报告18.docx》由会员分享,可在线阅读,更多相关《(中央电大)数据结构实验报告18.docx(7页珍藏版)》请在优知文库上搜索。
1、中心广播电视高校试验报告(学科:数据结构)姓名单位班级学号试验日期成果评定老师签名批改日期试验名称:试验一线性表线性表的链式存储结构【问题描述】某项竞赛中,评委们给某参赛者的评分信息存储在一个带头结点的单向链表中,编写程序:(1)显示在评分中给出最高分和最低分的评委的有关信息(姓名、年龄、所给分数等)。(2) 在链表中删除一个最高分和一个最低分的结点。(3) 计算该参赛者去掉一个最高分和一个最低分后的平均成果。【基本要求】(1) 建立一个评委打分的单向链表;(2) 显示删除相关结点后的链表信息。(3) 显示要求的结果。【试验步骤】(1) 运行PC中的MicrosoftVisualC+6.0程序
2、,(2) 点击“文件”一“新建”一对话窗口中“文件”f“c+SourceFile”一在“文件名”中输入“Xl.cpp”f在“位置”中选择储存路径为“桌面”一“确定”,(3) 输入程序代码,程序代码如下:#include#include#include#include#include#defineNU1.1.0#definePWRS5/定义评委人数structpw定义评委信息charname6;floatscore;intage;1;typedefstructPWPW;structnode定义链表结点structpwdata;structnode*next;1;typedefstructnode
3、NODE;NODE*create(intm);仓IJ建单链表intcalc(NODE*h);/计算、数据处理voidprint(NODE*h);输出全部评委打分数据voidinput(NODE*s);输入评委打分数据voidoutput(NODE*s);输出评委打分数据voidmain()(NODE*head;floatave=0;floatsum=0;head=create(PWRS);Primf(全部评委打分信息如下下”);Print(head);/显示当前评委打分calc(head);计算成果Printf(该选手去掉I最高分和1最低分后的有效评委成果:n);Print(head);显示去
4、掉极限分后的评委打分)voidinput(NODE*s)(Primf(请输入评委的姓名:);scanf(%S,data.name);Primfe年龄:,);scanf(%d,data.age);Printf(打分:);scanf(%,data.score);printf(n);)voidoutput(NODE*s)(Printf(评委姓名:8s,年龄:%d,打分:%2.2n,s-data.name,s-data.age,s-data.score);)NODE*create(intm)(NODE*head,*p,*q;inti;p=(NODE*)malloc(sizeof(NODE);head=
5、p;q=p;p-next=NU1.1.;fbr(i=l;inext=NU1.1.;q-next=p;q=p;)return(head);)voidprint(NODE*h)for(inti=l;(inext!=NU1.1.);i+)h=h-next;output(三);)printf(,n);)intcalc(NODE*h)(NODE*q,*p,*pmin,*pmax;floatsum=0;floatave=0;p=h-next;指向首元结点pmin=pmax=p;/设置初始值sum+=p-data.score;p=p-next;for(;p!=NU1.1.;p=p-next)(if(p-da
6、ta.scorepmax-data.score)pmax=p;if(p-data.scoredata.score)pmin=p;sum+=p-data.score;),data.age,分值:,data.age11分值:cout给出最高分的评委姓名:data.name年龄:data.scoreendl;cout给出最低分的评委姓名:,data.name,年龄:data.scoredata.score;sum-=pmax-data.score;for(q=h,p=h-next;p!=NU1.1.;q=p,p=p-next)(if(=pmin)q-next=p-next;P=q;删除最低分结点if
7、(p=pmax)q-next=p-next;P=q;删除最高分结点ave=sum(PWRS-2);cout该选手的最终得分是:aveendl;return1;程序运行结果如下:*C:Docu三cntsandSottinesasu3JBic31123Dcbuex1.cxcW分:78扁I入评委的姓名:b33件龄:33打分:88焉入评委的姓名:C件龄:40,了分:99扇1入评委的姓名:d件龄:35门分:6?3萌人评委的姓名:e件龄:29j分:89干prrl1.EJUt-kl-打分信息如下三a,龄龄龄龄龄-U?0000加加加后工最掉的去名名名手手建建建R洗7(委亥3,J,分分氐5.3,3AM432评0
8、0器蚊8.8.9.8R线性表的依次存储结构【问题描述】用依次表A记录学生的信息,编写程序:(I)将A表分解成两个依次表B和C,使C表中含原A表中性别为男性的学生,B表中含原表中性别为女性的学生,要求学生的次序与原A表中相同。(2)分别求男生和女生的平均年龄【基本要求】(1) 建立学生信息的依次表A。(2) 显示B表和C表中的相关信息。(3) 显示计算结果。【试验步骤;】(1)运行PC中的MicrosoftVisualC+6.0程序,(2)点击“文件”一“新建”一对话窗口中“文件”一“c+SourceFile”一在“文件名”中输入“Xl.cpp”f在“位置”中选择储存路径为“桌面”一“确定”,(
9、3)输入程序代码,程序代码如下:#include#include#include#include#include#include包含库函数Strcpy的头文件#defineNU1.1.Ostructstudent定义学生信息charnamel8;intsex;0女:1:男intage;;typedefstructstudentSTD;intcreate(STD*m);创建依次表intcalc(STD*m,STD*n,STD*r,float&Fage,float&Mage);/计算、数据处理voidprint(STD*m);constintMAX=Io0;定义人数voidmain()(STDAM
10、AX;STDBlMAX;STDCMAX;floatage1=0,age2=0;agel男age2女create(八);Printf(学生总表A记录如下:n);print(八);calc(A,B,C,ageI,age2);Printf(女生名册B记录如下:);print(B);Printf(男生名册C记录如下:);print(C);)intcreate(STD*m)(intn;Printf(”请输入班级总人数:n);scanf(%d,(fen);m0.age=n;置依次表长度Printf(请输入学生信息:n);for(inti=l;i=n;i+)(Printfr姓名:);scanf(,%sfem
11、i.name);Printf(性别0女1男:);scanf(,%d,mi.sex);Printf(“年龄:);scanf(H%d,&mi.age);printf(,n11);return1;intcalc(STD*m,STD*n,STD*r,float&Fage,float&Mage)inti,j=l,k=l;n0.age=r0.age=0;for(i=l;i=mO.age;i+)if(mi.sex=0)(strcpy(nj.name,mi.name);nj.sex=mi.sex;nj.age=mi.age;n0.age+;Mage+=mi.age+;)else(strcpy(rk.name,
12、mij.name);rk.sex=mi.sex;rk.age=mi.age;rO.age+;Fage+=miJ.age;k+;)Mage=Magen0.age;Fage=FagerO.age;CoUt”女生的平均年龄是:Mage”男生的平均年龄是:Fageendl;returnI;)voidprint(STD*m)(for(inti=l;i=mlO.age;i+)(Printf(姓名:3s,性别(0女1男):d,年龄:dn,mi.name,mi.sex,mi.age);程序运行结果如下:姓名:ddd性别。女1男:I年龄:15姓名:ddd性别0女1男:1年龄:14-F:女女女女女:F:女女女F:
13、女女-000003e1100011000如JJJJEK如J如JJtH别别别别别龄戴别别别别y律性性桂年厚桂性却性性keA-,-拈B*C-U-,戋abCddlst.abcddn京abCdd斗出abC卅dda总:a:b*:d:d的名:a:b君:d:dS生名名名名名生生名名名生名名es学姓姓姓姓姓女蓑姓姓翥姓r、班级总.姓名:bbb性别0女勇:0:12名:CCC性别0女1男:0年龄:13235t多KnIlo是12345龄:1:1:1:1:1年龄龄龄龄龄均-二I-二-二i匚1.1.今纤可耳龄龄龄三二一三试验结束。试验结论:线性表采纳链式存储(链表)时:以结构变量存储结点,动态生成结点,以指针链接结点,能有效利用存储空间,插入删除