ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:17.83KB ,
资源ID:2265870      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2265870.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《数据结构》期中作业.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《数据结构》期中作业.docx

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

2、 datatype; #define maxsize 1024; typedef struct datatype datamaxsize; int last; sequenlist; int insert(L, x, i) sequenlist *L; int i; int j; if (*L).last= =maxsize-1) printf(“overflow”); return Null; else if (i(*L).last+1) printf(“error”); return Null; else for(j=(*L).last; j=i-1; j-) (*L).dataj+1=(

3、*L).dataj; (*L).datai-1=x; (*L).last=(*L).last+1; return(1); int delete(L,i) sequenlist *L; int i; int j; if (i(*L).last+1) printf (“error”); return Null; else for(j=i, j=(*L).last; j+) (*L).dataj-1=(*L).dataj; (*L).data - -; return(1); void creatlist( ) sequenlist *L; int n, i, j; printf(“请输入n个数据n”

4、); scanf(“%d”,&n); for(i=0; in; i+) printf(“data%d=”, i); scanf (“%d”, (*L).datai); (*L).last=n-1; printf(“n”); printout (L) sequenlist *L; int i; for(i=0; i(*L).last; i+) printf(“data%d=”, i); printf(“%d”, (*L).datai); main( ) sequenlist *L; char cmd; int i, t; clscr( ); printf(“i, I.插入n”); printf(

5、“d,D.删除n”); printf(“q,Q退出n”); do do cmd =getchar( ); while(cmd!=d)(cmd!=D) (cmd!=q) (cmd!=Q) (cmd!=i) (cmd!=I); switch (cmd) case i,I; scanf(&x); scanf(&i); insert(L, x, i); printout(L); break; case d,D; scanf(&i); delete(L, i); printout(L); break; while (cmd!=q)&( cmd!=Q); 实验二 二叉树的操作一、 实验目的1、 进一步掌握

6、指针变量、动态变量的含义;2、 掌握二叉树的结构特征,以及各种存储结构的特点及适用范围;3、 掌握用指针类型描述、访问和处理二叉树的运算。二、 实验内容已知以二叉链表作存储结构,试编写按层次顺序遍历二叉树的算法。算法思想:本算法要采用一个队列q,先将二叉树根结点入队列,然后退队列,输出该结点;若它有左子树,便将左子树根结点入队列;若它有右子树,便将右子树根结点入队列,直到队列空为止。因为队列的特点是先进先出,从而达到按层次顺序遍历二叉树的目的。程序实现: #define M 100 #define Null 0 typedef struct node int data; stuuct node

7、 *lchild, *rchild; bitree; bitree *queM; int front=0, rear=0;bitree *creat( ) bitree *t;int x;scanf (“%d”, &x);if (x= =0) t=Null;else t=malloc(sizeof(bitree); tdata=x; tlchild=creat( ); trchild=creat( ); return t;void inorder( t )bitree *t; if (t!=Null) inorder (tlchild); printf(“%4d”, tdata); inord

8、er (trchild); void enqueue(t)bitree *t; if(front!=(rear+1) % M) rear = (rear+1) % M;querear=t; bitree *delqueue( ) if (front= =rear) return Null; front=(front+1) % M; return (quefront);void levorder ( t ) bitree *t; bitree *p; if(t!=Null) enqueue( t );while(front!=rear) p=delqueue( ); printf(“%4d”,

9、pdata); if(plchild!=Null) enqueue(plchild); if(prchild!=Null) enqueue(prchild); main ( ) bitree *root; printf(“n”); root=creat ( ); inorder(root); printf(“n”); levorder(root);实验三 图的操作一、 实验目的1、 掌握图的基本存储方法;2、 掌握有关图的操作算法并用高级语言实现;3、 熟练掌握图的两种搜索路径的遍历方法。二、 实验内容假设以一个带权有向图表示某一区域的公交线路网,图中顶点代表一些区域中的重要场所,弧代表已有的

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

11、ypedef vexnode Graphn;void Floyd(Graph G, float Ann, int pnn) int i, 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 +AkjAij) Pij=k; Aij=Aik+Akj; 实验四 排序一、 实验目的1、 掌握常用的排序方法,并掌握用高级语言实现排序算法的方法;2、 深刻理解排序的定义和各种排序方法的特点,并能加以灵活应用;3、 了解各种方法

12、的排序过程及其依据的原则,并掌握各种排序方法的时间复杂度的分析方法。二、 实验内容统计成绩问题描述给出n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法:(1) 按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;(2) 按名次列出每个学生的姓名与分数。基本要求学生的考试成绩表必须通过键盘输入数据而建立,同时要对输出进行格式控制。算法实现下面给出的是用直接选择排序算法实现的C语言程序。#define n 30typedef struct student char name8; int score; student Rn;main ( ) int num, i,

13、j, max, temp; printf(“n请输入学生成绩: n”); for (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); 实验五 查找一、实验目的1、掌握查找的不同方法,并能用高级语言实现查找算法;2、熟练掌握二叉树的构造和查找方法。二、实验内容设计一个读入一串整数构成一棵二叉排序树的算法。实现提示二叉排序树的构成,可从空的二叉树开始,每输入一个结点数据,就建立一个新结点插入到当前已生成的二叉排序树中,所以它的主要操作是二叉排序树插入运算。在二叉排序树中插入新结点,只要保证插入后仍符合二叉排序树

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1