数据结构课程实验报告 学生姓名 学 号 班 级 指导老师 实验名称 线性表的链式存储结构 实验成绩 实验报告 实 验 概 述 实验目的: 掌握线性表的链式存储结构及基本操作,深入了解顺序表的基本特性。 实验要求: (1 )建立一个评委打分的单向链表。 (2 )显示删除相关结点后的链表信息。 (3 )显示要求的结果。 实验基本原理: 用尾插法建立带头结点的单链表,逐次比较求最高分和最低分,用物理删除的方法累加求和,计算总分及平均分。 实 验 内 容 实验设计思路、步骤和方法等: 某项比赛中,评委们给某参赛者的评分信息存储在一个带头结点的单向链表中,编写程序: (1)显示在评分中给出最高分和最低分的评委的有关信息(姓名、年龄、所给分数等)。 (2)在链表中删除一个最高分和一个最低分的结点。 (3)计算该参赛者去掉一个最高分和一个最低分后的平均成绩。 实验过程(实验中涉及的记录、数据、分析): (1)评委信息结点用结构变量存储,包含三个成员项,即姓名、年龄、评分。结构类型定义如下: //定义评委信息 struct pw { char name[8]; //姓名 short age; //年龄 float score; //评分 }; (2)用头插法或尾插法建立带头结点的单链表,本实验采用尾插法。 (3)遍历链表并逐次比较求最高分和最低分。 (4)在链表中物理删除,即实际删除最高分和最低分结点;也可以进行逻辑删除,即在被删结点的数据域设置一个删除标记,本实验采用物理删除的方法。 (5)遍历链表,累加求和,计算总分及平均分,并输出相关信息。 程序代码如下: //实验1.1 线性表的链接存储结构 #include #include #include #define PWRS 5 //定义评委人数 //定义评委信息 struct pw { char name[8]; //姓名 short age; //年龄 float score; //评分 }; typedef struct pw PW; //定义链表结点 struct node { PW data; struct node * next; }; typedef struct node NODE; NODE *create(int n); //建立单链表 void input(NODE *s,int i); //输入第i 个评委信息 void output(NODE *s); //输出评委信息 void traverse(NODE *head); //遍历链表 void calc(NODE *head); //计算及数据处理 void main() { NODE *head=NULL; head=create(PWRS); //建立评委信息单链表 printf("\n 所有评委的评分信息如下:\n"); traverse(head); //输...