- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构形成性考核册
实验名称:实验一 线性表
线性表的链式存储结构
【问题描述】
某项比赛中,评委们给某参赛者的评分信息存储在一个带头结点的单向链表中,编写程序:
显示在评分中给出最高分和最低分的评委的有关信息(姓名、年龄、所给分数等)。
在链表中删除一个最高分和一个最低分的结点。
计算该参赛者去掉一个最高分和一个最低分后的平均成绩。
【基本要求】
建立一个评委打分的单向链表;
显示删除相关结点后的链表信息。
显示要求的结果。
【实验步骤】
运行PC中的Microsoft Visual C++ 6.0程序,
点击“文件”→“新建” →对话窗口中“文件” →“c++ Source File” →在“文件名”中输入“X1.cpp” →在“位置”中选择储存路径为“桌面” →“确定”,
输入程序代码,
程序代码如下:
#include stdio.h
#include stdlib.h
#include malloc.h
#include iostream.h
#include conio.h
#define NULL 0
#define PWRS 5 //定义评委人数
struct pw //定义评委信息
{ char name[6];
float score;
int age;
};
typedef struct pw PW;
struct node //定义链表结点
{struct pw data;
struct node * next;
};
typedef struct node NODE;
NODE *create(int m); //创建单链表
int calc(NODE *h); //计算、数据处理
void print(NODE *h); //输出所有评委打分数据
void input(NODE *s);//输入评委打分数据
void output(NODE *s);//输出评委打分数据
void main()
{
NODE *head;
float ave=0;
float sum=0;
head=create(PWRS);
printf(所有评委打分信息如下:\n);
print(head);//显示当前评委打分
calc(head);//计算成绩
printf(该选手去掉 1 最高分和 1 最低分后的有效评委成绩:\n);
print(head);//显示去掉极限分后的评委打分
}
void input(NODE *s)
{
printf(请输入评委的姓名: );
scanf(%S,s-data.name);
printf(年龄: );
scanf(%d,s-data.age);
printf(打分: );
scanf(%f,s-data.score);
printf(\n);
}
void output(NODE *s)
{
printf(评委姓名: %8s ,年龄: %d,打分: %2.2f\n,s-data.name,s-data.age,s-data.score);
}
NODE *create(int m)
{
NODE *head,*p,*q;
int i;
p=(NODE*)malloc(sizeof(NODE));
head=p;
q=p;
p-next=NULL;
for(i=1;i=m;i++){
p=(NODE*)malloc(sizeof(NODE));
input(p);
p-next=NULL;
q-next=p;
q=p;
}
return (head);
}
void print(NODE *h)
{ for(int i=1;((i=PWRS)(h-next!=NULL));i++){
h=h-next;
output(h); }
printf(\n);
}
int calc(NODE *h)
{
NODE *q,*p,*pmin,*pmax;
float sum=0;
float ave=0;
p=h-next; //指向首元结点
pmin=pmax=p; //设置初始值
sum+=p-data.score;
p=p-next;
for(;p!=NULL;p=p-next)
{
if(p-data.scorepmax-data.score) pmax=p;
if(p-data.scorepmin-data.score) p
文档评论(0)