- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
数据结构课程实验报告
学生姓名
学 号
班 级
指导老师
实验名称
线性表的链式存储结 构
实验成绩
实验报告
实验概述
实验目的:
掌握线性表的链式存储结构及基本操作,深入了解顺序表的基本特性。
实验要求:
1、建立一个评委打分的单向链表。
2、显示删除相关结点后的链表信息。
3、显示要求的结果。
请认真阅读以上实验的问题描述,按照实验要求认真独立完成实验。如果在实 验过程中遇到困难,你可以通过以下辅助方式,顺利完成本实验。
实验基本原理:
1、声明线性表的数据类型
2、 一般在头文件中声明(该头文件中还应包括操作接口的声明);
3、告诉编译器该数据类型占内存空间的大小;
4、定义线性表类型的变量;
5、在函数中或实现代码中的定义
6、告诉编译器为变量分配内存空间;
7、操作线性表类型变量;
8、操作变量中保存的数据;
实验内容
实验设计思路、步骤和方法等:
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);//输出所有评委的评分信息
calc(head);//计算成绩
printf("该参赛者去掉一个最高分和一个最低分后的有效评委的评分信息 如下:\n");
traverse(head);//输出有效评委的评分信息
//尾插法建立带头结点的单链表
NODE *create(int n)
NODE *head,*p,*q;int i;
p=(NODE*)malloc(sizeof(NODE));head=p; q=p; p->next=NULL;for(i=1; i<=n;i++)
p=(NODE*)malloc(sizeof(NODE));
input(p,i);p->next=NULL;
q->next=p;
q=p;
return(head);
//输入评委信息,包括姓名、年龄和评分
void input(NODE *s,int i){
printf("请输入第%d个评委的姓名、年龄和评分:",i);
scanf("%s%d%f",&s->data.name,&s->data.age,&s->data.score);} //输出评委信息
void output(NODE *s)
printf("评委姓名:%6s年龄:%d评
分:%6.2f\n",s->data.name,s->data.age,s->data.score);
//遍历链表,输出所有评委的评分信息
void traverse(NODE *head){
NODE *p=head->next;//指向第一个结点
while(p!=NULL)
output(p);p=p->next;}
printf("\n");
//输出最高分及最低分评委信息,删除最高分及最低分结点并计算参赛者的最后平 均分
void calc(NODE *head){
NODE *q,*p,*pmin,*p
文档评论(0)