《2022年数据结构实验报告 .docx》由会员分享,可在线阅读,更多相关《2022年数据结构实验报告 .docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品_精品资料_中心广播电视高校试验报告(学科:数据结构)姓名单位班级学号试验日期成果评定老师签名批改日期试验名称:试验一 线性表线性表的链式储备结构【问题描述 】某项竞赛中,评委们给某参赛者的评分信息储备在一个带头结点的单向链表中,编写程序:(1) 显示在评分中给出最高分和最低分的评委的有关信息(姓名、年龄、所给分数等).(2) 在链表中删除一个最高分和一个最低分的结点.(3) 运算该参赛者去掉一个最高分和一个最低分后的平均成果.【基本要求 】(1) 建立一个评委打分的单向链表.(2) 显示删除相关结点后的链表信息.(3) 显示要求的结果.【试验步骤 】(1) 运行 PC中的 Microso
2、ft Visual C+ 6.0程序,(2) 点击 “文件 ”“新建 ”对话窗口中 “文件 ”“ c+Source File”在“文件名 ”中输入 “ X1.cpp ”在“位置 ”中挑选储存路径为“桌面 ”“确定 ”,(3) 输入程序代码,程序代码如下 : #include #include #include #include #include #define NULL 0#define PWRS 5 / 定义评委人数struct pw / 定义评委信息 char name6 .float score.int age. .typedef struct pw PW .struct node /
3、定义链表结点struct pw data .可编辑资料 - - - 欢迎下载精品_精品资料_struct node * next . .typedef struct node NODE .NODE *createint m . /创建单链表int calcNODE *h . / 运算、数据处理void printNODE *h. / 输出全部评委打分数据void inputNODE *s./输入评委打分数据 void outputNODE *s./输出评委打分数据void mainNODE *head .float ave=0 .float sum=0 .head=createPWRS.pri
4、ntf 全部评委打分信息如下:n .printhead ./ 显示当前评委打分calchead./ 运算成果printf 该选手去掉 1 最高分和 1 最低分后的有效评委成果:n .printhead ./ 显示去掉极限分后的评委打分void inputNODE *sprintf 请输入评委的姓名 : .scanf%S,&s-data.name .printf 年龄 : .scanf%d,&s-data.age .printf 打分 : .scanf%f,&s-data.score .printfn .void outputNODE *sprintf 评委姓名 : %8s , 年龄: %d,打
5、分 : %2.2fn,s-data.name,s-data.age,s-data.score.NODE *createint mNODE *head,*p,*q.int i .p=NODE*mallocsizeofNODE.head=p.q=p.p-next=NULL .fori=1 .inext=NULL .q-next=p .q=p.return head.void printNODE *h forint i=1 .inext.=NULL.i+ h=h-next .outputh . printfn .int calcNODE *hNODE *q,*p,*pmin,*pmax.float
6、sum=0 .float ave=0 .p=h-next . / 指向首元结点pmin=pmax=p . / 设置初始值sum+=p-data.score.p=p-next .for .p.=NULL .p=p-nextifp-data.scorepmax-data.score pmax=p .ifp-data.scoredata.score pmin=p .sum+=p-data.score.cout 给出最高分的评委姓名:data.name 年龄:data.age 分值: data.scoreendl.cout 给出最低分的评委姓名:data.name 年龄:data.age 分值: da
7、ta.scoredata.score .sum-=pmax-data.score.for q=h,p=h-next . p.=NULL .q=p,p=p-nextifp=pminq-next=p-next ifp=pmax q-next=p-next. p=q./ 删除最低分结点. p=q ./ 删除最高分结点ave=sum/PWRS-2 .cout 该选手的最终得分是:return 1 .aveendl .可编辑资料 - - - 欢迎下载精品_精品资料_程序运行结果如下 :线性表的次序储备结构【问题描述】用次序表 A 记录同学的信息,编写程序:(1) 将 A 表分解成两个次序表 B和C,使C
8、表中含原 A 表中性别为男性的同学,B 表中含原表中性别为女性的同学,要求同学的次序与原A 表中相同.(2) 分别求男生和女生的平均年龄【基本要求】(1) 建立同学信息的次序表A .(2) 显示 B表和 C表中的相关信息.(3) 显示运算结果.【试验步骤.】(1) 运行 PC中的 Microsoft Visual C+ 6.0程序,(2) 点击 “文件 ”“新建 ”对话窗口中 “文件 ”“ c+Source File”在“文件名 ”中输入 “ X1.cpp ”在“位置 ”中挑选储存路径为“桌面 ”“确定 ”,3 输入程序代码,程序代码如下 : #include #include #includ
9、e #include #include 可编辑资料 - - - 欢迎下载精品_精品资料_#include / 包含库函数 strcpy的头文件#define NULL 0struct student / 定义同学信息 char name8 .int sex. /0 女: 1:男int age. .typedef struct student STD .int createSTD *m . / 创建次序表int calcSTD *m,STD *n,STD *r,float &Fage,float &Mage. /运算、数据处理void printSTD *m.const int MAX=100.
10、 / 定义人数void mainSTD AMAX .STD BMAX .STD CMAX .float age1=0,age2=0. /age1男 age2女createA .printf 同学总表 A 记录如下 : n .printA .calcA,B,C,age1,age2 .printf 女生名册 B 记录如下 : n .printB .printf 男生名册 C记录如下 : n .printC .int createSTD *mint n.printf 请输入班级总人数:n .scanf %d,&n .m0.age=n . /置次序表 长度printf 请输入同学信息:n .forin
11、t i=1 .i=n .i+printf 姓名 : .scanf%s,&mi.name.printf 性别 0女1男: .scanf%d,&mi.sex.printf 年龄 : .scanf%d,&mi.age.printfn .可编辑资料 - - - 欢迎下载精品_精品资料_return 1.int calcSTD *m,STD *n,STD *r,float &Fage,float &Mage int i,j=1,k=1.n0.age=r0.age=0 .for i=1 .i=m0.age .i+ ifmi.sex=0strcpynj.name,mi.name .nj.sex=mi.sex
12、 . nj.age=mi.age .n0.age+ . Mage+=mi.age .j+ .elsestrcpyrk.name,mi.name.rk.sex=mi.sex . rk.age=mi.age .r0.age+ .Fage+=mi.age .k+ .Mage=Mage/n0.age . Fage=Fage/r0.age.cout 女生的平均年龄是: Mage 男生的平均年龄是: Fageendl .return 1 .void printSTD *mforint i=1 .inext=q-next . q-next=p . 尾插法:指针变量q始终指向尾结点,p 指针开创单元,生成结点: q-next=p . q=p. .插入: p 所指向结点的后面插入新结点s 所指结点 s-next=p-next . p-next=s .删除: p, q指向相邻结点, q所指结点是p所指结点的后继,删除q所指结点, p-next=q-next . .遍历: p=p-next .7 / 7可编辑资料 - - - 欢迎下载