电大《数据结构》实验报告_第1页
电大《数据结构》实验报告_第2页
电大《数据结构》实验报告_第3页
电大《数据结构》实验报告_第4页
电大《数据结构》实验报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构形成性考核册实验名称:实验一线性表线性表的链式存储结构 TOC o 1-5 h z 【 问题描述】某项比赛中,评委们给某参赛者的评分信息存储在一个带头结点的单向链表中,编写程序:(1 )显示在评分中给出最高分和最低分的评委的有关信息(姓名、年龄、所给分数等)。在链表中删除一个最高分和一个最低分的结点。计算该参赛者去掉一个最高分和一个最低分后的平均成绩。【 基本要求】)建立一个评委打分的单向链表;显示删除相关结点后的链表信息。显示要求的结果。【 实验步骤】)运行PC 中的 Microsoft Visual C+ 程序,点击“文件”-“新建”-对话窗口中“文件” -c+ Source Fi

2、le” -在“文件名”中输入-在“位置”中选择储存路径为“桌面” -“确定”,3) 输入程序代码,程序代码如下:#include #include #include #include #include #define NULL 0,:,:姓 妁 叁A- S :i.-n8/ s 1鬻分,打时,J甲打雯石名苣君名 劣蹇燧姓101 b ,:,:姓 妁 叁A- S :i.-n8/ s 1鬻分,打时,J甲打雯石名苣君名 劣蹇燧姓101 b d *二 IE r-1ft代龈踪娃唯 专A 计浑 我的 去1) ,口信 等十 faE .一 m 口二三c dw- 5V 9V -b. : t z 狗去名名名 +4-二

3、二一最怅分后的白效片委成绩:孙叶舟0日M=W*尸亍升二W九W0ge=n; ame);#define PWRS 5 2.2fprintf(性别 0女 1 男:);scanf(%d,&mi.sex);printf(年龄:);scanf(%d”,&mi.age);printf(n);return 1;int calc(STD *m,STD *n,STD *r,float &Fage,float &Mage) int i,j=1,k=1;n0.age=r0.age=0;for( i=1;i=m0.age;i+) if(mi.sex=0)strcpy(,);nj.sex=mi

4、.sex; nj.age=mi.age;n0.age+; Mage+=mi.age;j+;elsestrcpy(,);rk.sex=mi.sex; rk.age=mi.age;r0.age+;Fage+=mi.age;k+;Mage=Mage/n0.age; Fage=Fage/r0.age;cout女生的平均年龄是:Mage男生的平均年龄是:Fageendl;return 1;void print(STD *m)for(int i=1;i i 工工也配年年年4 bL工釐年仟T=血密烈一噤华经内AB0B0-n-二 B0ST S 因ng v 4 k-uk g v WI

5、C1口/ c t山?ELIK营炉比 yfl - * * - i B 七 cfldp火 1rib G d dpr灯 号Hst:cF:d的名 ,C 日 a” 此 u a d drll bcE d d . =Jb人名sdsdfi生名名名名名窒名毒生名名半在券-hex在净”加实验结束。实验结论:线性表采用链式存储(链表)时:以结构变量存储结点,动态生成结点,以指针链接结点,能有效利用存储空间,插入删除方便,但不能随机访问.单向链表可从某结点访问到后继结点。 单向链表操作的关键步骤:建立链表的头插法:指针变量p开辟单元,生成结点,指针变量q始终指向头结点,操作为:p-next=q-next; q-nex

6、t=p;尾插法:指针变量 q始终指向尾结点,p指针开辟单元,生成结 点: q-next=p; q=p;插入:p所指向结点的后面插入新结点s所指结点 s-next=p-next; p-next=s;删除:p, q指向相邻结点,q所指结点是p所指结点的后继,删除 q所指结点,p-next=q-next;遍历:p=p-next;实验名称:实验二 栈、列队、递归程序设计栈和队列的基本操作【问题描述】编写一个算法,输出指定栈中的栈底元素,并使得原栈中的元素倒置。【基本要求】(1)正确理解栈的先进后出的操作特点,建立初始栈,通过相关操作显示栈底元素。(2)程序中要体现出建栈过程和取出栈底元素后恢复栈的入栈

7、过程,按堆栈的操作规则打印结果栈中的元素。【实验步骤;】运行 PC 中的 Microsoft Visual C+ 程序,点击“文件” 一 “新建”一对话窗口中“文件” 一 “c+ Source File” 一在“文件名”中输入一在“位置”中选择储存路径为“桌面” 一 “确定”,输入程序代码,程序代码如下:#include #include #define MaxSize 100typedef char ElemType;typedef structElemType dataMaxSize; int top;初始化棉4T6环戋为非岑4T6环戋为非岑_h幡质到栈底兀素:C d 0 b a 奘底元素

8、为:我k”出长/人队列 性为空.队序列w deba出队列,人设两以整为北空.前歹然空 从梭质到模底元素旧 t dany key to cuntinme珂羌要排列的数字:命位训低位逐次触出各位教室;2 2 4 5 6 区橘位式I高位逐次输出珞检数36 5 4 3 2Press any key to continue.lbdhiejicfr Piess any key to continueameiamex=s0.avg ;while(lowsmid.avg )hight=mid-1;elselow=mid+1;for(k=0;klow-1;k+)strcpy(,sk+1.name)

9、;sk.avg =sk+1.avg ;printf(%d,low);strcpy( ,y);slow-1.avg =x;void main()Struct student aN=caozh”,96,cheng”,95,zhao,93,wang,92,chen,91;struct student stuN;int i;for(i=0;iN;i+)stui+1=ai;printf(初始%d位同学的信息表n,MAX);printf(排名姓名平均分数n);for(i=1;i=N;i+)printf(%d:%6s%3.2fn,i,,stui.avg);printf

10、(n);printf(n);printf(请输入学生的姓名:);scanf(%s, );printf(n);printf(请输入平均成绩:);scanf(%f,&stu0.avg );printf(n);insort(stu,N);printf(折半排序后同学的信息表n,MAX);printf(排名姓名平均分数n);for(i=0;i=N;i+) printf(%d: %6s %3.2fn,i+1,,stui.avg); printf(n);程序运行结果如下实验二叉排序树的建立设计程序代码如下#include#include#define MAX 5type

11、def struct Bnodeint key;struct Bnode *left;struct Bnode *right;Bnode;Bnode * btInsert(int x,Bnode *root);void Inorder(Bnode *root);void main()int i;int aMAX=60,40,70,20,80;Bnode * root=NULL;printf( 按关键字序列建立二叉排序树n);for(i=0;iMAX;i+) printf(%d ,ai);printf(n);for(i=0;ikey=x;p-right=p-left=NULL;if(root=N

12、ULL) root=p; return p; q=root;while(flag=0)if(q-keyx)if(q-left!=NULL)q=q-left;elseq-left=p;flag=1;elseif(q-right!=NULL) q=q-right;elseq-right=p;flag=1;return root;void Inorder(Bnode *root)if(root!=NULL) Inorder(root-left);printf(%d ,root-key);Inorder(root-right);程序运行结果如下:实验名称:实验六排序泡沫法排序的改进算法 TOC o 1

13、-5 h z 【 问题描述】某班学生成绩信息表中每个学生的记录包括各门功课的成绩和平均成绩,以及按平均成绩的排名等信息,要求从键盘输入每个学生各门功课的成绩,计算出平均成绩,按平均成绩由高到低对信息的记录重新排序,并定出每位同学的名次,打印排序后的信息表。【 基本要求】( 4)建立学生成绩信息表,计算平均成绩。( 5)用泡沫法对平均成绩排序,程序中要求一旦序列被排好序就结束相应排序操作。【 测试数据】自行设计【 实验提示】( 1 )用结构数组存放学生成绩信息表。( 2)在某趟泡沫中没有发生元素间的交换则说明已排好序堆排序【 问题描述】阅读筛选和建堆的程序,针对某一个待排序的序列,通过人工跟踪程

14、序的执行,完成排序的全过程【 基本要求】(1 )掌握建堆、筛选的基本原理和算法步骤。(2)写出主函数,试运行堆排序的程序。(3)掌握堆排序的算法程序,能针对实例按步骤人工完成建堆和排序的过程。【 测试数据】自行设计。【 实验提示】( 1 ) 筛选是建堆的基本算法。把要排序序列看成一棵完全二叉树,用循环方式从最后一个非叶结(设序号为k)开始,逐次对序号为k, k-1,的结点,直至根结点调用筛选算法,完成建堆。3)不断通过堆顶元素与堆中最后一个元素的交换并筛选,完成排序。实验报告内容:实验 冒泡法排序的改进设计程序代码如下:#include#include#define MAX 3struct s

15、tudentchar name10;float cs;float ms;float es;float avg;void sort(struct student s口,int n);void sort(struct student s口,int n) struct student temp;int i,j;for(i=1; in; i+)for(j=0; jn-i; j+)if(sj.avgsj+1.avg )temp = sj;sj = sj+1;sj+1 = temp;void main() struct student stuMAX;int i;printf(请输入%d位同学的姓名和各科成

16、绩n,MAX);for(i=0;iMAX;i+)printf(请输入第 %d位学生的姓名:,i+1);scanf(%s,);printf(n);printf(语文分数:);scanf(%f,&stui.cs);printf(n);printf(数学分数:);scanf(%f,&stui.ms);printf(n);printf(英语分数:);scanf(%f,&stui.es);printf(n);stui.avg=(stui.cs+stui.ms+stui.es)/3;sort(stu,MAX);printf(排名姓名语文 数学 外语平均分数n);for(i=0;i y y

17、 t u cuiii IL实验堆排序设计程序代码如下:#include#define N 8 struct NODEint date;;void heapshift(struct NODE a口,int i,int n)struct NODE temp;int j;temp=ai;j=2*i;while(jn)if(j+1aj+1.date ) j+;if aj.date ) ai=aj;i=j;j=2*i;else break;ai=temp;void heapsort(struct NODE a口,int n)int i;struct NODE temp;for(i=n/2;i=1;i-)heapshift(a,i,n);for(i=n;i1;i-)temp=a1;a1=ai;ai=temp;heapshift(a,1,i-1);vo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论