数据结构形成性考核册
实验名称:实验一 线性表
线性表的链式存储结构
问题描述
某项比赛中,评委们给某参赛者的评分信息存储在一个带头结点的单向链表中,编写程序:
(1)显示在评分中给出最高分和最低分的评委的有关信息(姓名、年龄、所给分数等)。
(2)在链表中删除一个最高分和一个最低分的结点。
(3)计算该参赛者去掉一个最高分和一个最低分后的平均成绩。
基本要求
(1)建立一个评委打分的单向链表;
(2)显示删除相关结点后的链表信息。
(3)显示要求的结果。
实验步骤
(1)运行PC中的Microsoft Visual C++ 6.0程序,
(2)点击“文件”→“新建” →对话窗口中“文件” →“c++ Source File” →在“文件名”中输入“X1.cpp” →在“位置”中选择储存路径为“桌面” →“确定”,
(3)输入程序代码,
程序代码如下:
#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++){

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。