还剩4页未读,继续阅读
文本内容:
数据结构课程实验报告学生姓名学号班级指导老师实验名称实验成绩线性表的链式存储结构实验报告实验目的掌握线性表的链式存储结构及基本操作,深入了解顺序表的基本特性实验实验要求概
1、建立一个评委打分的单向链表述
2、显示删除相关结点后的链表信息
3、显示要求的结果请认真阅读以上实验的问题描述,按照实验要求认真独立完成实验如果在实验过程中遇到困难,你可以通过以下辅助方式,顺利完本钱实验实验基本原理
1、声明线性表的数据类型;
2、一般在头文件中声明(该头文件中还应包括操作接口的声明);
3、告诉编译器该数据类型占内存空间的大小;
4、定义线性表类型的变量;
5、在函数中或实现代码中的定义;
6、告诉编译器为变量分配内存空间;
7、操作线性表类型变量;实验设计思路、步骤和方法等
1、评委信息结点用结构变量存储,包含三个成员项,即姓名、年龄、评分结构实类型定义如下验〃定义评委信息内struct pw容(char name
[8];〃姓名short age;//年龄float score;〃评分);
2、用头插法或尾插法建立带头结点的单链表,本实验采用尾插法
3、遍历链表并逐次比拟求最高分和最低分
4、在链表中物理删除,即实际删除最高分和最低分结点;也可以进行逻辑删除,即在被删结点的数据域设置一个删除标记,本实验采用物理删除的方法
5、遍历链表,累加求和,计算总分及平均分,并输出相关信息RFI T.占~»4自4送工口1-/「rt」法日/K k/分实验过程实验中涉及的记录、数据、分析〃实验
1.1线性表的链接存储结构#include#include#includedefine PWRS5〃定义评委人数〃定义评委信息struct pwchar name[8_〃姓名short age;〃年龄float score;〃评分;typedef structpw PW;〃定义链表结点struct nodePWdata;struct node*next;};typedef structnode NODE;NODE*create int n;〃建立单链表void inputNODE*s,int i;//输入第i个评委信息void outputNODE*s;〃输出评委信息void traverseNODE*head;〃遍历链表void calcNODE*head;〃计算及数据处理void main{NODE*head=NULL;head=create PWRS;〃建立评委信息单链表printf〃\n所有评委的评分信息如下\n〃;traverse head;〃输出所有评委的评分信息calc head;计算成绩printf〃该参赛者去掉一个最高分和一个最低分后的有效评委的评分信息如下口〃;traverse head;〃输出有效评委的评分信息〃尾插法建立带头结点的单链表NODE createintn{NODE*head,*p,*q;int i;p=NODE*mallocsizeofNODE;head=p;q=p;p-next=NULL;fori=l;i=n;i++{p=NODE*mallocsizeofNODE;input p,i;p-next=NULL;q-next=p;q=p;return head;}〃输入评委信息,包括姓名、年龄和评分void inputNODE*s,int i{printf〃请输入第%d个评委的姓名、年龄和评分〃,i;scanf〃%s%d%f〃,s-data.name,s-data.age,s-data.score;〃输出评委信息void outputNODE*s{printf〃评委姓名%6s年龄%d评分:%6,2f\n〃,s-data.name,s-data.age,s-data.score;〃遍历链表,输出所有评委的评分信息void traverseNODE*head{NODE*p=head-next;〃指向第一个结点while p!=NULLoutput p;p=p-next;}printf〃\n〃;〃输出最高分及最低分评委信息,删除最高分及最低分结点并计算参赛者的最后平均分void calcNODE分ead{NODE*q,*p,*pmin,*pmax;float sum=0;〃总分float ave=0;〃平均分〃查找最高分和最低分并计算总分p=head-next;pmin二pmax二p;while p!=NULL{sum+=p-data.score;if p-data.scorepmax-data.score pmax=p;//pmax指向最高分结点if p-data.scoredata,score pmin=p;//pmin指向最低分结点65OO00C:\Docusient sand Settings\All Users\Affi\sy1_1\Debug\sy1穿65音羊人平牙O氏卜、O人天人庠四00一入平开天、不二答瘁力评分答息,珥评二耳蛤评评信二心委±历答二平答±」、二干答耳二评、一个最高分和一个最低分后的平均得分为:去掉一个最分和一rWj个日”八后的有效评委的评分信息如下:a年龄,
4586.00:c隼龄
4880.
0078.00any keyto continue实验的心得体会
1、线性表采用链式存储链表时,用结构变量存储结点,动态生成结点,用指实针链接结点,能有效利用存储空间,插入删除方便验
2、链表不能随机访问,是顺序访问方式,可从某结点访问到其后继结点,通常小对单链表的遍历即从表头结点顺序访问到表尾结点,任何在链表上做的查找运算都是结在遍历的基础卜.进行的
3、单链表操作的关键步骤包括1建立链表的头插法指针变量P开辟单元,生成结点,指针变量q始终指向头结点;操作为p-next=q-next;q-next=p;RBSrrLU45eKKA4TTFabcdhhHMkFELU D2843453THD2NJOF42NJO+n568-\7T-n-7T/rmnnzZ./1Z7,--/sIsS••2建立链表的尾插法指针变量p开辟单元,生成结点,指针变量q始终指向尾结点;操作为q-next=p;q=p;3插入:p结点的后面插入新结点s;操作为s-〉next=p-〉next;p-next=s;
4、删除p,q指向相邻结点,q结点是p结点的后继,删除q结点;操作为p-next=q-next;
5、遍历p指向后继结点;操作为p=p nex实验思考:指导教师评语指导日期教师。
个人认证
优秀文档
获得点赞 0