(中央电大)数据结构实验报告
中央广播电视大学实验报告(学科:数据结构)姓名单位班级学号实验日期成绩评定教师签名批改日期实验名称:实验一线性表线性表的链式存储结构【问题描述】某项比赛中,评委们给某参赛者的评分信息存储在一个带头结点的单向链表中,编写程序:(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->)。
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->,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.score>pmax->data.score) pmax=p。
if(p->data.score<pmin->data.score) pmin=p。
sum+=p->data.score。
}cout<<"给出最高分的评委姓名:"<<pmax-><<"年龄:"<<pmax->data.age<<"分值:"<<pmax->data.score<<endl。
cout<<"给出最低分的评委姓名:"<<pmin-><<"年龄:"<<pmin->data.age<<"分值:"<<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。
}程序运行结果如下:线性表的顺序存储结构【问题描述】用顺序表A记录学生的信息,编写程序:(1)将A表分解成两个顺序表B和C,使C表中含原A表中性别为男性的学生,B表中含原表中性别为女性的学生,要求学生的次序与原A表中相同。
(2)分别求男生和女生的平均年龄【基本要求】(1)建立学生信息的顺序表A。
(2)显示B表和C表中的相关信息。
(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>#include <string.h> //包含库函数strcpy的头文件#define NULL 0struct student //定义学生信息{ char name[8]。
int sex。
//0 女: 1:男int age。
}。
typedef struct student STD。
int create(STD *m)。
//创建顺序表int calc(STD *m,STD *n,STD *r,float &Fage,float &Mage)。
//计算、数据处理void print(STD *m)。
const int MAX=100。
//定义人数void main(){STD A[MAX]。
STD B[MAX]。
STD C[MAX]。
float age1=0,age2=0。
//age1男 age2女create(A)。
printf("学生总表A记录如下: \n")。
print(A)。
calc(A,B,C,age1,age2)。
printf("女生名册B记录如下: \n")。
print(B)。
printf("男生名册C记录如下: \n")。
print(C)。
}int create(STD *m){int n。
printf ("请输入班级总人数:\n ")。
scanf ("%d",&n)。
m[0].age=n。
//置顺序表长度printf("请输入学生信息:\n")。
for(int i=1。
i<=n。
i++){printf("姓名: ")。
scanf("%s",&m[i].name)。
printf("性别0女1男: ")。
scanf("%d",&m[i].sex)。
printf("年龄: ")。
scanf("%d",&m[i].age)。
printf("\n")。
}return 1。
}int calc(STD *m,STD *n,STD *r,float &Fage,float &Mage){ int i,j=1,k=1。
n[0].age=r[0].age=0。
for( i=1。
i<=m[0].age。
i++){ if(m[i].sex==0){strcpy(n[j].name,m[i].name)。
n[j].sex=m[i].sex。
n[j].age=m[i].age。
n[0].age++。
Mage+=m[i].age。
j++。
}else{strcpy(r[k].name,m[i].name)。
r[k].sex=m[i].sex。
r[k].age=m[i].age。
r[0].age++。
Fage+=m[i].age。
数据结构实验报告4(中央电大)
实验报告(四)专业名称 课程名称批改教师主持教师实验成绩校外评阅教师实验名称 图的存储方式和应用使用主要设备 PC, VC++6.0 实验要求 1.掌握图的存储结构,了解它的应用; 2.理解图的"最短路径"计算方法,了解相关的程序设计技术。
实验报告内容:实验4.1 建立图的邻接矩阵图4-1* 设计程序代码如下:#include<stdio.h>#define MaxVertexNum 5#define MaxEdgeNum 20#define MaxValue 1000typedef int VertexType;typedef VertexType vexlist [MaxVertexNum];typedef int adjmatrix [MaxVertexNum] [MaxVertexNum];void Createl(vexlist Gv,adjmatrix GA,int n,int e){int i,j,k,w;printf("输入%d个顶点数据\n",n);for(i=0;i<n;i++) scanf("%d",&Gv[i]);for(i=0;i<n;i++)for(j=0;j<n;j++){if(i==j) GA[i][j]=0;else GA[i][j]=MaxValue;}Printf("输入一条边的两端点序号i和j及边上的权w\n");printf("输入%d条无向带权边\n",e);for(k=1;k<=e;k++){scanf("%d%d%d",&i,&j,&w);GA[i][j]=GA[j][i]=w;}}void main(){vexlist vl;adjmatrix a;Createl(vl,a,5,8);}????????1。
《数据结构》实验报告
《数据结构》实验报告目录一、实验概述 (2)二、实验原理 (2)2.1 数据结构基本概念 (3)2.2 选择的数据结构类型 (4)2.3 实验原理说明 (5)三、实验步骤 (6)3.1 实验准备 (7)3.2 数据结构选择与实现 (7)3.2.1 数据结构类型选择 (9)3.2.2 数据结构实现细节 (9)3.3 实验功能实现 (10)3.3.1 功能一 (11)3.3.2 功能二 (12)四、实验结果与分析 (13)4.1 实验数据 (15)4.2 结果展示 (16)4.2.1 结果一展示 (17)4.2.2 结果二展示 (17)4.3 结果分析 (18)4.3.1 结果一分析 (19)4.3.2 结果二分析 (20)五、实验总结与讨论 (22)5.1 实验总结 (23)5.2 实验中遇到的问题及解决方法 (24)5.3 对数据结构的认识与体会 (25)5.4 对实验教学的建议 (27)一、实验概述本次实验旨在通过实际操作,加深对《数据结构》课程中所学理论知识的理解和掌握。
实验内容围绕数据结构的基本概念、常用算法以及在实际应用中的实现进行设计。
通过本次实验,学生将能够:理解并掌握线性表、栈、队列、链表、树、图等基本数据结构的特点和适用场景。
掌握常用的数据结构操作算法,如插入、删除、查找等,并能够运用这些算法解决实际问题。
学习使用C++、或其他编程语言实现数据结构的操作,提高编程能力和算法设计能力。
本次实验报告将对实验的目的、内容、步骤、结果及分析等方面进行详细阐述,旨在通过实验过程的学习,提高学生对数据结构理论知识的理解和应用能力。
二、实验原理数据结构的基本概念:介绍数据结构的基本定义,包括数据元素、数据集合、数据关系等基本概念,以及数据结构的三要素:逻辑结构、存储结构和运算。
栈和队列:介绍栈和队列的定义、特点、基本运算及其在算法设计中的重要性。
树和二叉树:讲解树的基本概念、二叉树的结构特点、遍历方法、二叉搜索树及其在数据检索中的应用。
国开数据结构本提交实验报告
国开数据结构本提交实验报告一、引言数据结构是计算机科学中的重要概念,包括各种基本数据结构(如数组、链表、堆栈、队列、树、图等)和它们之间的关系。
数据结构的选择和设计直接影响了算法的效率和程序的质量。
国开数据结构本是一门培养学生具备良好数据结构理论和实践能力的课程。
本实验报告旨在讨论数据结构本的实验报告提交要求和相关的实验内容。
二、实验报告提交要求为了能够及时了解学生的学习情况和掌握学生实际编程能力,国开教务部门对数据结构本的实验报告提出了一些具体的要求。
2.1 实验题目和目标每个实验的实验题目需要明确指定,并包含实验的目标和要求。
实验题目应具体、明确,以便让学生清楚地了解实验的内容和目标。
2.2 实验环境和工具学生需要在指定的实验环境下进行实验,教务部门会明确指出所需要使用的工具和软件版本。
学生需要自行安装和配置相关环境和工具,并确保实验环境正常运行。
2.3 实验报告格式和要求实验报告需要按照教务部门给出的格式进行书写,包括实验报告的标题、作者、时间、实验目的、实验内容、实验步骤、实验结果和实验总结等部分。
实验报告应具备良好的结构和逻辑,清晰地展示实验的过程和结果。
2.4 实验代码和文件提交学生需要按要求将实验代码和文件提交给教务部门,以便教师进行批改和评分。
学生需要确保代码和文件的准确性和完整性,并按要求命名和打包提交。
三、实验内容国开数据结构本的实验内容丰富多样,涉及到各种基本数据结构和相关算法的实现和应用。
以下列举了部分实验内容:3.1 线性表的实现线性表是数据元素的一个有限序列,包括线性顺序表和线性链表。
学生需要实现线性表的基本操作,如插入、删除、修改和查找等。
实验目标是掌握线性表的存储结构和基本操作。
3.2 栈和队列的实现栈和队列都是重要的数据结构,栈具有后进先出(LIFO)的特性,队列具有先进先出(FIFO)的特性。
学生需要实现栈和队列的基本操作,如进栈、出栈、入队和出队等。
实验目标是理解栈和队列的特性和应用。
国家开放大学《数据结构》课程实验报告(实验3 ——栈、队列、递归设计)参考答案
x=Pop(s); /*出栈*/
printf("%d ",x);
InQueue(sq,x); /*入队*/
}
printf("\n");
printf("(10)栈为%s,",(StackEmpty(s)?"空":"非空"));
printf("队列为%s\n",(QueueEmpty(sq)?"空":"非空"));
ElemType Pop(SeqStack *s); /*出栈*/
ElemType GetTop(SeqStack *s); /*取栈顶元素*/
void DispStack(SeqStack *s); /*依次输出从栈顶到栈底的元素*/
void DispBottom(SeqStack *s); /*输出栈底元素*/
} SeqQueue; /*定义顺序队列*/
void InitStack(SeqStack *s); /*初始化栈*/
int StackEmpty(SeqStack *s); /*判栈空*/
int StackFull(SeqStack *s); /*判栈满*/
void Push(SeqStack *s,ElemType x); /*进栈*/
sq=(SeqQueue *)malloc(sizeof(SeqQueue));
InitQueue(sq);
printf("(8)队列为%s\n",(QueueEmpty(sq)?"空":"非空"));
printf("(9)出栈/入队的元素依次为:");
数据结构课程实验报告
数据结构课程实验报告一、实验目的数据结构是计算机科学中一门重要的基础课程,通过本次实验,旨在加深对数据结构基本概念和算法的理解,提高编程能力和解决实际问题的能力。
具体目标包括:1、掌握常见数据结构(如数组、链表、栈、队列、树、图等)的基本操作和实现方法。
2、学会运用数据结构解决实际问题,培养算法设计和分析的能力。
3、提高程序设计的规范性和可读性,培养良好的编程习惯。
二、实验环境本次实验使用的编程语言为C++,开发环境为Visual Studio 2019。
三、实验内容本次实验共包括以下几个部分:(一)线性表的实现与操作1、顺序表的实现定义一个顺序表结构体,包含数据元素数组和表的长度。
实现顺序表的初始化、插入、删除、查找等基本操作。
2、链表的实现定义链表节点结构体,包含数据域和指针域。
实现链表的创建、插入、删除、遍历等操作。
(二)栈和队列的实现与应用1、栈的实现采用顺序存储或链式存储实现栈。
实现栈的入栈、出栈、栈顶元素获取等操作,并应用于表达式求值。
2、队列的实现用循环队列或链式队列实现队列。
实现队列的入队、出队、队头元素获取等操作,应用于模拟排队系统。
(三)树的基本操作与遍历1、二叉树的实现定义二叉树节点结构体,包含数据域、左子树指针和右子树指针。
实现二叉树的创建、插入、删除节点等操作。
2、二叉树的遍历分别实现前序遍历、中序遍历和后序遍历,并输出遍历结果。
(四)图的表示与遍历1、邻接矩阵和邻接表表示图定义图的结构体,使用邻接矩阵和邻接表两种方式存储图的信息。
实现图的创建、添加边等操作。
2、图的遍历分别用深度优先搜索(DFS)和广度优先搜索(BFS)遍历图,并输出遍历序列。
四、实验步骤(一)线性表的实现与操作1、顺序表的实现首先,定义了一个结构体`SeqList` 来表示顺序表,其中包含一个整数数组`data` 用于存储数据元素,以及一个整数`length` 表示表的当前长度。
在初始化函数`InitSeqList` 中,将表的长度初始化为 0,并分配一定的存储空间给数组。
2023年数据结构实验报告中央电大
实验报告(五)实验名称查找使用重要设备PC,VC++6.0实验规定1.掌握折半查找的算法环节和实现方法;2.掌握二叉排序树的性质、构造方法;3.按实验内容完毕相关程序,并用实例进行测试,验证其对的性。
实验报告内容:实验5.1 折半查找设计程序代码如下:#include<stdio.h>#include<string.h>#define N 5struct student{char name[10];float avg;}void insort(struct student s[],int n){int low,hight,mid,k;char y[10];float x;low=1;hight=n;strcpy(y,s[0].name );x=s[0].avg ;while(low<=hight){mid=(low+hight)/2;if(x>s[mid].avg )hight=mid-1;elselow=mid+1;}for(k=0;k<low-1;k++){strcpy(s[k].name,s[k+1].name) ;s[k].avg =s[k+1].avg ;}printf("%d",low);strcpy(s[low-1].name ,y) ;s[low-1].avg =x;}void main(){Struct student a[N]={{"caozh",96},{"cheng",95},{"zhao",93},{"wang",92},{"chen",91}};struct student stu[N];int i;for(i=0;i<N;i++)stu[i+1]=a[i];printf("初始%d 位同学的信息表\n",MAX);printf("排名姓名平均分数\n");for(i=1;i<=N;i++)printf("%d: %6s %3.2f\n",i,stu[i].name,stu[i].avg);printf("\n");printf("\n");printf("请输入学生的姓名:");scanf("%s",stu[0].name );printf("\n");printf("请输入平均成绩:");scanf("%f",&stu[0].avg );printf("\n");insort(stu,N);printf("折半排序后同学的信息表\n",MAX);printf("排名姓名平均分数\n");for(i=0;i<=N;i++){printf("%d: %6s %3.2f\n",i+1,stu[i].name,stu[i].avg);}printf("\n");}程序运营结果如下:实验5.2 二叉排序树的建立 设计程序代码如下:#include<stdio.h>#include<stdlib.h>#define MAX 5typedef struct Bnode{int key;struct Bnode *left;struct Bnode *right;}Bnode;Bnode * btInsert(int x,Bnode *root);void Inorder(Bnode *root);void main(){int i;int a[MAX]={60,40,70,20,80};Bnode * root=NULL;printf("按关键字序列建立二叉排序树\n");for(i=0;i<MAX;i++) printf("%d ",a[i]);printf("\n");for(i=0;i<MAX;i++) root=btInsert(a[i],root);printf("中序遍历的二叉排序树\n");Inorder(root);printf("\n");}Bnode * btInsert(int x,Bnode * root) {Bnode *p,*q;int flag=0;p=(Bnode *)malloc(sizeof(Bnode));p->key=x;p->right=p->left=NULL;if(root==NULL){ root=p; return p; }q=root;while(flag==0){if(q->key>x){if(q->left!=NULL)q=q->left;else{q->left=p;flag=1;}}else{if(q->right!=NULL)q=q->right;else{q->right=p;flag=1;}}}return root;}void Inorder(Bnode *root){if(root!=NULL) {Inorder(root->left);printf("%d ",root->key);Inorder(root->right);}}程序运营结果如下:。
(中央电大)数据结构实验报告2
实验结论: 栈和队列是运算受限制的线性表 ? 栈:后进先出(LIFO) ? 例:进栈b, c, d, e, f 出栈可能为 f, e, d, c, b; b, c, d, e, f ; c, b, e, d, f ???但不可能是e, d, f, b, c ? 队列:先进先出(FIFO) ? 例:入队1,2,3,4,5 出队1,2,3,4,5
中央广播电视大学实验报告(学科:数据结构 ) 姓名 成绩评定 班级 学号 教师签名 实验日期 批改日期
实验名称:实验二 栈、列队、递归程序设计 2.1 栈和队列的基本操作 【问题描述】 编写一个算法,输出指定栈中的栈底元素,并使得原栈中的元素倒置。 【基本要求】 (1)正确理解栈的先进后出的操作特点,建立初始栈,通过相关操作显示栈底元素。 (2)程序中要体现出建栈过程和取出栈底元素后恢复栈的入栈过程,按堆栈的操作规则 打印结果栈中的元素。 【实验步骤;】 (1) 运行PC中的Microsoft Visual C++ 6.0程序, (2) 点击"文件"→"新建" →对话窗口中"文件" →"c++ Source File" →在"文件名"中 输入"X1.cpp" →在"位置"中选择储存路径为"桌面" →"确定", (3) 输入程序代码, 程序代码如下: #include <stdio.h> #include <malloc.h> #define MaxSize 100 typedef char ElemType; typedef struct { ElemType data[MaxSize]; int top; //栈顶指针 } SeqStack;//定义栈 typedef struct { ElemType elem[MaxSize]; int front,rear; //队首和队尾指针 } SqQueue;//定义队列 //---初始栈函数 void InitStack(SeqStack *&s) { s=(SeqStack *)malloc(sizeof(SeqStack)); s->top=-1; } //----进栈函数 int Push(SeqStack *&s,ElemType e) { if (s->top==MaxSize-1) return 0; s->top++; s->data[s->top]=e;
《数据结构》实训报告
《数据结构》实训报告数据结构实训报告一、实训目的和意义数据结构是计算机科学与技术专业的一门重要基础课程,通过学习数据结构可以帮助我们提高程序的效率和优化算法的性能。
在这次实训中,我们旨在通过实践应用所学的数据结构知识,进行问题解决和算法设计,提高我们的编程能力和思维逻辑。
二、实训内容和过程本次实训主要包括以下几个部分:线性表的应用、栈和队列的实现、树和图的应用。
首先,我们针对线性表的应用,选择了用数组实现一个顺序表和用链表实现一个单链表。
通过实际编程和调试,我们深入了解了数组和链表的特性和功能,并对其进行了性能对比和分析。
顺序表适合查找操作,但插入和删除操作的效率较低;而链表则可以实现快速插入和删除操作,但查找效率相对较低。
接着,我们实现了栈和队列这两种常用的数据结构。
我们分别使用数组和链表实现了栈和队列,并进行了相关操作的测试。
通过实际运行和验证,我们了解到栈和队列的应用场景和特点。
栈适用于递归和表达式求值等场景,而队列则适用于模拟等先进先出的场景。
最后,我们进行了树和图的应用。
我们实现了一个二叉树,并对其进行了遍历的操作。
此外,我们使用邻接矩阵实现了一个有向图,并进行了深度优先和广度优先的操作。
通过实践,我们加深了对树和图结构的理解,以及相关算法的应用和分析。
三、实践总结和收获通过这次数据结构的实训,我们学到了很多理论知识的应用和实践技巧。
具体来说,我们深入了解了线性表、栈、队列、树和图等数据结构的基本概念、特性和实现方式。
同时,我们掌握了相应的算法设计和优化的方法。
在实践过程中,我们遇到了不少问题和困难。
例如,在实现链表时,我们经常会出现指针指向错误或者内存泄漏的情况。
但通过调试和修改,我们逐渐克服了这些问题,并成功完成了实践任务。
通过这次实训,我们不仅提高了编程实践的能力,更重要的是加深了对数据结构的理解和应用。
我们了解了不同数据结构之间的特点和适用场景,能够根据实际问题选择合适的数据结构和算法。
数据结构实验实训总结报告
一、实验背景随着计算机技术的飞速发展,数据结构作为计算机科学的重要基础,已经成为现代软件开发和数据处理的关键技术。
为了提高学生的数据结构应用能力,我们学校开设了数据结构实验实训课程。
本课程旨在通过实验实训,使学生深入理解数据结构的基本概念、性质、应用,掌握各种数据结构的实现方法,提高编程能力和解决实际问题的能力。
二、实验内容本次数据结构实验实训主要包括以下内容:1. 数据结构的基本概念和性质通过实验,使学生掌握线性表、栈、队列、串、树、图等基本数据结构的概念、性质和应用场景。
2. 数据结构的存储结构通过实验,使学生熟悉线性表、栈、队列、串、树、图等数据结构的顺序存储和链式存储方法,了解不同存储结构的优缺点。
3. 数据结构的操作算法通过实验,使学生掌握线性表、栈、队列、串、树、图等数据结构的插入、删除、查找、遍历等基本操作算法。
4. 数据结构的实际应用通过实验,使学生了解数据结构在各个领域的应用,如网络数据结构、数据库数据结构、人工智能数据结构等。
三、实验过程1. 实验准备在实验开始前,教师首先对实验内容进行讲解,使学生了解实验目的、实验步骤和实验要求。
同时,教师要求学生预习实验内容,熟悉相关理论知识。
2. 实验实施(1)线性表:通过实现线性表的顺序存储和链式存储,实现插入、删除、查找等操作。
(2)栈和队列:通过实现栈和队列的顺序存储和链式存储,实现入栈、出栈、入队、出队等操作。
(3)串:通过实现串的顺序存储和链式存储,实现串的插入、删除、查找等操作。
(4)树:通过实现二叉树、二叉搜索树、平衡二叉树等,实现树的插入、删除、查找、遍历等操作。
(5)图:通过实现图的邻接矩阵和邻接表存储,实现图的插入、删除、查找、遍历等操作。
3. 实验总结实验结束后,教师组织学生进行实验总结,总结实验过程中的收获和不足,提出改进措施。
四、实验成果通过本次数据结构实验实训,学生取得了以下成果:1. 掌握了数据结构的基本概念、性质和应用场景。
(中央电大)数据结构实验报告
中央广播电视大学实验报告(学科:数据结构)姓名单位班级学号实验日期成绩评定教师签名批改日期实验名称:实验一线性表线性表的链式存储结构【问题描述】某项比赛中,评委们给某参赛者的评分信息存储在一个带头结点的单向链表中,编写程序:(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)。
