《数据结构》期中作业

上传人:无*** 文档编号:50630232 上传时间:2022-01-21 格式:DOCX 页数:29 大小:99.78KB
收藏 版权申诉 举报 下载
《数据结构》期中作业_第1页
第1页 / 共29页
《数据结构》期中作业_第2页
第2页 / 共29页
《数据结构》期中作业_第3页
第3页 / 共29页
资源描述:

《《数据结构》期中作业》由会员分享,可在线阅读,更多相关《《数据结构》期中作业(29页珍藏版)》请在装配图网上搜索。

1、98989北京邮电大学远程教育计算机科学与技术专业数据结构实验指导书实验一线性表的插入和删除一、实验目的1、掌握用TurboC上机调试线性表的基本方法;2、掌握线性表的基本操作,插入、删除、查找,以及线性表合并等运算在顺序存储结构和链接存储结构上的运算。二、实验内容线性表基本操作的实现当我们要在线性表的顺序存储结构上的第i个位置上插入一个元素时,必须先将线性表的第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。若要删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置。程序实现:typedefNull0;typedefintdatatype;#defi

2、nemaxsize1024;typedefstructdatatypedatamaxsize;intlast;sequenlist;intinsert(L,x,i)sequenlist*L;inti;intj;if(*L).last=maxsize-1)printf(overflow);return Null;98989elseif(i(*L).last+1)printf(error);returnNull;elsefor(j=(*L).last;j=i-1;j-)(*L).dataj+1=(*L).dataj;(*L).datai-1=x;(*L).last=(*L).last+1;retu

3、rn(1);intdelete(L,i)sequenlist*L;inti;intj;if(i(*L).last+1)printf(error);returnNull;elsefor(j=i,j=(*L).last;j+)(*L).dataj-1=(*L).dataj;(*L).data-;return(1);98989voidcreatlist()sequenlist*L;intn,i,j;printf(请“输入n个数据n”);scanf(d,&n);for(i=0;in;i+)printf(data%d=,i);scanf(“d”,(*L).datai);(*L).last=n-1;pri

4、ntf(n”);printout(L)sequenlist*L;inti;for(i=0;i(*L).last;i+)printf(data%d=,i);printf(d”),.datai);(*Lmain()sequenlist*L;charcmd;inti,t;clscr();printf(i,I插入?.n);printf(d,D 删?除.n);98989printf(q,Q?退由n”);dodocmd=getchar();while(cmd!=d)II(cmd!=D)II(cmd!=q)(cmd!=Q)II(cmd!=i)II(cmd!=I);switch(cmd)casei,I;sca

5、nf(&x);scanf(&i);insert(L,x,i);printout(L);break;cased,D;scanf(&i);delete(L,i);printout(L);break;while(cmd!=q)&(cmd!=Q);实验二二叉树的操作一、实验目的1、进一步掌握指针变量、动态变量的含义;989892、掌握二叉树的结构特征,以及各种存储结构的特点及适用范围;4989893、掌握用指针类型描述、访问和处理二叉树的运算。二、实验内容已知以二叉链表作存储结构,试编写按层次顺序遍历二叉树的算法。然后退队从而达算法思想:本算法要采用一个队列q,先将二叉树根结点入队列,列,输由该结点;

6、若它有左子树,便将左子树根结点入队列;若它有右子树,便将右子树根结点入队列,直到队列空为止。因为队列的特点是先进先生,到按层次顺序遍历二叉树的目的。程序实现:#defineM100#defineNull0typedefstructnodeintdata;stuuctnode*lchild,*rchild;bitree;bitree*queM;intfront=0,rear=0;bitree*creat()bitree*t;intx;scanf(d”,&x);if(x=0)t=Null;elset=malloc(sizeof(bitree);t-data=x;tflchild=creat();t

7、frchild=creat();returnt;voidinorder(t)bitree*t;if(t!=Null)inorder(t-Ichild);printf(4d”,t-data);inorder(tfrchild);voidenqueue(t)bitree*t;if(front!=(rear+1)%M)rear=(rear+1)%M;querear=t;bitree*delqueue()if(front=rear)returnNull;front=(front+1)%M;return(quefront);voidlevorder(t)bitree*t;98989bitree*p;69

8、8989if(t!=Null)enqueue(t);while(front!=rear)p=delqueue();printf(“4ddata);,pif(p-lchild!=Null)enqueue(pflchild);if(p-rchild!=Null)enqueue(pfrchild);main()bitree*root;printf(n);root=creat();inorder(root);printf(n);levorder(root);图的操作实验三一、实验目的1、掌握图的基本存储方法;2、掌握有关图的操作算法并用高级语言实现;3、熟练掌握图的两种搜索路径的遍历方法。二、实验内容

9、假设以一个带权有向图表示某一区域的公交线路网,图中顶点代表一些区域中的重要场所,弧代表已有的公交线路,弧上的权表示该线路上的票价(或搭乘所需时间),试设计一个交通指南系统,指导前来咨询者以最低的票价或最少的时间从区域中的某一场所到达另一场所。算法思想:下面是R、W、Floyd求每对顶点之间最短路径算法的C语言程序,程序中矩阵A用来进行n次迭代,矩阵P用来记录路径,Pij为迭代过程中当前已经求得的从顶点i到顶点j的最短路径上最后被插入的那个顶点。算法实现:typedefstructnodeintno;floatwgt;structnode*next;edgenode;typedefstructc

10、harvtx;edgenode*link;vexnode;typedefvexnodeGraphn;voidFloyd(GraphG,floatAnn,intpnn)inti,j,k;for(i=0;in;i+)for(j=0;jn;j+)Aij=Gij;Pij=-1;for(k=0;kn;k+)for(i=0;in;i+)for(j=0;jn;j+)if(Aik+AkjA皿)P皿尸k;Aij=Aik+Akj;实验四排序一、实验目的1、掌握常用的排序方法,并掌握用高级语言实现排序算法的方法;2、深刻理解排序的定义和各种排序方法的特点,并能加以灵活应用;3、了解各种方法的排序过程及其依据的原则,

11、并掌握各种排序方法的时间复杂度的分析方法。二、实验内容统计成绩问题描述给由n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法:(1)按分数高低次序,打印由每个学生在考试中获得的名次,分数相同的为同一名次;(2)按名次列由每个学生的姓名与分数。基本要求学生的考试成绩表必须通过键盘输入数据而建立,同时要对输生进行格式控制。算法实现下面给由的是用直接选择排序算法实现的C语言程序。#definen30typedefstructstudentcharname8;intscore;studentRn;main()intnum,i,j,max,temp;printf(n请输入学生成绩n”);fo

12、r(i=0;in;i+)printf(姓名“:”);scanf(s&stui”,.name);scanf(4d”,&stui.score);num=1;for(i=0;in;i+)max=i;for(j=i+1;jRmax.score)max=j;if(max!=i)temp=Rmax;Rmax=Ri;Ri=temp;if(i0)&(Ri.scoreRi-1.score)num=num+1;printf(4d%s%4d”,num,Ri.name,Ri.score);10实验五查找一、实验目的1、掌握查找的不同方法,并能用高级语言实现查找算法;2、熟练掌握二叉树的构造和查找方法。二、实验内容设计

13、一个读入一串整数构成一棵二叉排序树的算法。实现提示二叉排序树的构成,可从空的二叉树开始,每输入一个结点数据,就建立一个新结点插入到当前已生成的二叉排序树中,所以它的主要操作是二叉排序树插入运算。在二叉排序树中插入新结点,只要保证插入后仍符合二叉排序树的定义即可。算法实现typedefstructnodeintkey;intother;structnode*lchild,*rchild;bstnode;voidinorder(t)bstnode*t;if(t!=Null)inorder(t-lchild);printf(“4dkey);,tinorder(t-rchild);bstnode*in

14、sertbst(t,s)bstnode*s,*t;bstnode*f,*p;p=t;while(p!=Null)f=P;if(s-key=p-key)returnt;if(sfkeyp-key)p=p-Ichild;elsep=p-child;if(t=Null)returns;if(s-keyvffkey)f-lchild=selseffrchild=s;returnt;bstnode*creatord()bstnode*t,*s;intkey;t=Null;scanf(d”,&key);while(key!=0)s=malloc(sizeof(bitree);s-key=key;sflchild=Null;srchild=Null;scanf(d”,&data);sfother=data;t=insertbst(t,s);scanf(d”,&key);returnt;1298989main()bstnode*root;root=creatord();inorder(root);注:实验一,实验二和实验四为必做实验。专业资料学习资料教育培训考试建筑装潢资料

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!