线性表的链式存储结构实验报告

更新时间:2023-08-28 04:03:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一:线性表的链式存储结构

【问题描述】

某项比赛中,评委们给某参赛者的评分信息存储在一个带头结点的单向链表中,编写程序:

(1) 显示在评分中给出最高分和最低分的评委的有关信息(姓名、年龄、所给分数等)。

(2) 在链表中删除一个最高分和一个最低分的结点。

(3) 计算该参赛者去掉一个最高分和一个最低分后的平均成绩。

【基本要求】

(1) 建立一个评委打分的单向链表;

(2) 显示删除相关结点后的链表信息。

(3) 显示要求的结果。

【实验步骤;】

(1) 运行PC中的Microsoft Visual C++ 6.0程序,

(2) 点击“文件”→“新建” →对话窗口中“文件” →“c++ Source File” →在“文

件名”中输入“X1.cpp” →在“位置”中选择储存路径为“桌面” →“确定”,

(3) 输入程序代码,

程序代码如下:

head=create(PWRS);

printf("所有评委打分信息如下:\n");

print(head);//显示当前评委打分

calc(head);//计算成绩

printf("该选手去掉 1 最高分和 1 最低分后的有效评委成绩:\n");

print(head);//显示去掉极限分后的评委打分

}

void input(NODE *s) #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;

{

printf("请输入评委的姓名: ");

scanf("%S",&s->http://www.77cn.com.cn);

printf("年龄: ");

scanf("%d",&s->data.age);

printf("打分: ");

scanf("%f",&s->data.score);

printf("\n");

}

void output(NODE *s)

{

printf("评委姓名: %8s ,年分: %2.2f\n",s->http://www.77cn.com.cn,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;

龄: %d,打

}

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.score>pmax->data.score) pmax=p;

if(p->data.score<pmin->data.score) pmin=p;

sum+=p->data.score;

}

cout<<"给出最高分的评委姓名:"<<pmax->http://www.77cn.com.cn<<"年龄:分值:"<<pmax->data.score<<endl;

cout<<"给出最低分的评委姓名:"<<pmin->http://www.77cn.com.cn<<"年龄:分值:"<<pmin->data.score<<endl;

printf("\n");

sum-=pmin->data.score;

sum-=pmax->data.score;

for (q=h,p=h->next;p!=NULL;q=p,p=p->next)

{

if(p==pmin){q->next=p->next; p=q;}//删除最低分结点 if(p==pmax) {q->next=p->next; p=q;}//删除最高分结点 }

ave=sum/(PWRS-2);

cout<<"该选手的最后得分是:"<<ave<<endl;

return 1;

}

实验结束。

"<<pmax->data.age<<" "<<pmin->data.age<<"

本文来源:https://www.bwwdw.com/article/awii.html

Top