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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构实验报告.docx

1、数据结构实验报告数据结构实验报告时间:2020年08月03日 编稿:作者三第一篇:数据结构实验报告 河南省高等教育自学考试 实 验 报 告 册 计算机及应用专业(本科段) 数据结构 姓名周东伟准考证号010512201008所属地市郑州实验地点河南职业技术学院实验日期2014-3-18实验总成绩指导教师签名实验单位(实验室)意见:主考院校审核意见: 河南科技大学自学考试办公室 第二篇:数据结构实验报告 南京信息工程大学实验(实习)报告 实验(实习)名称数据结构实验(实习)日期 2011-11-2得分指导教师周素萍 系公共治理系专业信息治理与信息系统年级10级班次1姓名常玲学号201023070

2、0 3实验一顺序表的基本操作及C语言实现 【实验目的】 1、顺序表的基本操作及 C 语言实现 【实验要求】 1、用 C 语言建立自己的线性表结构的程序库,实现顺序表的基本操作。 2、对线性表表示的集合,集合数据由用户从键盘输入(数据类型为整型),建立相应的顺序表,且使得数据按从小到大的顺序存放,将两个集合的并的结果存储在一个新的线性表集合中,并输出。 【实验内容】 1、 依据教材定义的顺序表机构,用 C 语言实现顺序表结构的创建、插入、删除、 查寻等操作; 2、 利用上述顺序表操作实现如下程序:建立两个顺序表表示的集合(集合中无重 复的元素),并求这样的两个集合的并。 【实验结果】 实验数据、

3、结果、遇到的问题及解决 一 Status InsertOrderList(SqList &va,ElemType x) 二 Status DeleteK(SqList &a,int i,int k) 1 /在非递减的顺序表va中插入元素x并使其仍成为顺序表的算法 int i; if(va.length=va.listsize)return(OVERFLOW); for(i=va.length;i0,x /注意i的编号从0开始 int j; if(ia.length-1|ka.length-i) return INFEASIBLE; for(j=0;j 三/ 将合并逆置后的结果放在C表中,并删除

4、B表 Status ListMergeOppose_L(LinkList &A,LinkList &B,LinkList &C) LinkList pa,pb,qa,qb; pa=A; pb=B; qa=pa; qb=pb; / 保存pa的前驱指针 / 保存pb的前驱指针 pa=pa-next; pb=pb-next; A-next=NULL; C=A; while(pa&pb) while(pa) qa=pa; pa=pa-next; qa-next=A-next; A-next=qa; if(pa-datadata) else qb=pb; pb=pb-next; qb-next=A-ne

5、xt; /将当前最小结点插入A表表头 A-next=qb; qa=pa; pa=pa-next; qa-next=A-next; /将当前最小结点插入A表表头 A-next=qa; pb=B; free(pb); return OK; qb=pb; pb=pb-next; qb-next=A-next; A-next=qb; 顺序表就是把线性表的元素存储在数组中,元素之间的关系直接通过相邻元素的位置来表达。 优点:简单,数据元素的提取速度快; 缺点:(1)静态存储,无法预知问题规模的大小,可能空间不脚,或白费存储空间;(2)插入元素和删除元素时光复杂度高O(n) 求两个集合的并集 该算法是求两

6、个集合s1和s2的并集,并将结果存入s引用参数所表示的集合中带回。 首先把s1集合复制到s中,然后把s2中的每个元素依次插入到集合s中,固然重复的元素不应该被插入,最后在s中就得到了s1和s2的并集,也就是在s所对应的实际参数集合中得到并集。 第三篇:数据结构实验报告 注意:实验结束后提交一份实验报告电子文档 电子文档命名为“学号+姓名”,如:E01214058宋思怡 数据结构实验报告 (一) 学号:姓名:专业年级: 实验名称:线性表 实验日期:2014年4月14日 实验目的: 1、熟悉线性表的定义及其顺序和链式存储结构; 2、熟练掌握线性表在顺序存储结构上实现基本操作的办法; 3、熟练掌握在

7、各种链表结构中实现线性表基本操作的办法; 4、掌握用 C/C+语言调试程序的基本办法。 实验内容: 一、编写程序实现顺序表的各种基本运算,并在此基础上设计一个主程序完成如下功能: (1)初始化顺序表L; (2)依次在L尾部插入元素-1,21,13,24,8; (3)输出顺序表L; (4)输出顺序表L长度; (5)推断顺序表L是否为空; (6)输出顺序表L的第3个元素; (7)输出元素24的位置; (8)在L的第4个元素前插入元素0; (9)输出顺序表L; (10)删除L的第5个元素; (11)输出顺序表L。 源代码 调试分析(给出运行结果界面) 二、编写程序实现单链表的各种基本运算,并在此基础

8、上设计一个主程序完成如下功能: 小结或讨论: (1)实验中遇到的问题和解决办法 (2)实验中没有解决的问题 (3)体味和提高 第四篇:数据结构实验报告 数据结构实验报告 一 题目要求 1)编程实现二叉排序树,包括生成、插入,删除; 2)对二叉排序树举行先根、中根、和后根非递归遍历; 3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对照查寻效率,并说明在什么情况下二叉排序树效率高,为什么? 二 解决方案 对于前三个题目要求,我们用一个程序实现代码如下 #include #

9、include #include #include Stack.h/栈的头文件,没实用上 typedefintElemType; /数据类型 typedefint Status; /返回值类型 /定义二叉树结构 typedefstructBiTNode ElemType data; structBiTNode *lChild, *rChild;/左右子树域 BiTNode, *BiTree; intInsertBST(BiTree&T,int key)/插入二叉树函数 if(T=NULL) T = (BiTree)malloc(sizeof(BiTNode); T-data=key; T-lC

10、hild=T-rChild=NULL; return 1; else if(keydata) InsertBST(T-lChild,key); else if(keyT-data) InsertBST(T-rChild,key); else return 0; BiTreeCreateBST(int a,int n)/创建二叉树函数 BiTreebst=NULL; inti=0; while(i /数据域 InsertBST(bst,ai); i+; returnbst; int Delete(BiTree&T) BiTreeq,s; if(!(T)-rChild) /右子树为空重接它的左子树

11、 q=T; T=(T)-lChild; free(q); else if(!(T)-lChild) /若左子树空则重新接它的右子树 q=T; T=(T)-rChild; else q=T; s=(T)-lChild; while(s-rChild) q=s; s=s-rChild; (T)-data=s-data; /s指向被删除结点的前驱 if(q!=T) q-rChild=s-lChild; else q-lChild=s-lChild; free(s); return 1; /删除函数,在T中删除key元素 intDeleteBST(BiTree&T,int key) if(!T) re

12、turn 0; else if(key=(T)-data) return Delete(T); else if(keydata) returnDeleteBST(T-lChild,key); else returnDeleteBST(T-rChild,key); intPosttreeDepth(BiTree T)/求深度 inthr,hl,max; if(!T=NULL) hl=PosttreeDepth(T-lChild); hr=PosttreeDepth(T-rChild); max=hlhr?hl:hr; return max+1; else return 0; void print

13、tree(BiTreeT,intnlayer)/打印二叉树 if(T=NULL) return ; printtree(T-rChild,nlayer+1); for(inti=0;i ); printf(%dn,T-data); printtree(T-lChild,nlayer+1); void PreOrderNoRec(BiTree root)/先序非递归遍历 BiTree p=root; BiTreestack50; intnum=0; while(NULL!=p|num0) while(NULL!=p) printf(%d ,p-data); stacknum+=p; p=p-lC

14、hild; num-; p=stacknum; p=p-rChild; printf(n); void InOrderNoRec(BiTree root)/中序非递归遍历 BiTree p=root; intnum=0; BiTreestack50; while(NULL!=p|num0) while(NULL!=p) stacknum+=p; p=p-lChild; num-; p=stacknum; printf(%d ,p-data); p=p-rChild; printf(n); void PostOrderNoRec(BiTree root)/后序非递归遍历 BiTree p=roo

15、t; BiTreestack50; intnum=0; BiTreehave_visited=NULL; while(NULL!=p|num0) while(NULL!=p) stacknum+=p; p=p-lChild; p=stacknum-1; if(NULL=p-rChild|have_visited=p-rChild) printf(%d ,p-data); num-; have_visited=p; p=NULL; else p=p-rChild; printf(n); int main()/主函数 printf( -二叉排序树的实现-); printf(n); int laye

16、r; inti; intnum; printf(输入节点个数:); scanf(%d,&num); printf(依次输入这些整数(要不相等)); int *arr=(int*)malloc(num*sizeof(int); for(i=0;i scanf(%d,arr+i); BiTreebst=CreateBST(arr,num); printf(n); printf(二叉树创建成功!); printf(n); layer=PosttreeDepth(bst); printf(树状图为:n); printtree(bst,layer); int j; int T; int K; for(;

17、) loop: printf(n); printf( *按提示输入操作符*:); printf(n); printf( 1:插入节点 2:删除节点 3:打印二叉树 4:非递归遍历二叉树 5:退出); scanf(%d,&j); switch(j) case 1: printf(输入要插入的节点:); scanf(%d,&T); InsertBST(bst,T); printf(插入成功!); printf(树状图为:n); printtree(bst,layer); break; case 2: printf(输入要删除的节点); scanf(%d,&K); DeleteBST(bst,K);

18、 printf(删除成功!); printf(树状图为:n); printtree(bst,layer); break; case 3: layer=PosttreeDepth(bst); printtree(bst,layer); break; case 4: printf(非递归遍历二叉树); printf(先序遍历:n); PreOrderNoRec(bst); printf(中序遍历:n); InOrderNoRec(bst); printf(后序遍历:n); PostOrderNoRec(bst); printf(树状图为:n); printtree(bst,layer); brea

19、k; case 5: printf(程序执行完毕!); return 0; goto loop; return 0; 对于第四小问,要储存学生的三个信息,需要把上面程序修改一下,二叉树结构变为 typedefintElemType; /数据类型 typedefstring SlemType; typedefint Status; /返回值类型 /定义二叉树结构 typedefstructBiTNode SlemType name; ElemType score; ElemType no; /数据域 structBiTNode *lChild, *rChild;/左右子树域 BiTNode, *

20、BiTree; 参数不是key,而是另外三个 intInsertBST(BiTree&T,intno,intscore,string name)/插入二叉树函数 if(T=NULL) T = (BiTree)malloc(sizeof(BiTNode); T-no=no;T-name=name;T-score=score; T-lChild=T-rChild=NULL; return 1; else if(nono) InsertBST(T-lChild,no,score,name); else if(keyT-data) InsertBST(T-rChild,no,score,name);

21、else return 0; 其他含参函数也类似 即可完成50个信息存储 用数组存储50个信息,查看以往代码 #include #include using namespace std; class student private: intnum; string name; int ob1; int ob2; intara; public: void set(inta,stringb,intc,int d); void show(); int average(); ; void student :set(inta,stringb,intc,int d) num=a; name=b; ob1=c

22、; ob2=d; ara=(c+d)/2; void student:show() cout int main() coutnumlock; switch(numlock) case 0: couti; if(i=j) coutj; deletejptr; coutk; if(k!=j) cout break; coutq; coutw; coute; coutr; ptrk.set(q,w,e,r); break; case 3: for( m=1;m for(int n=m+1;n if(ptrm.average() student a; a=ptrm; ptrm=ptrn; ptrn=a

23、; ptrm.show(); break; case 4: cout 二叉排序树储存数据界面(储存学生信息略) 创建二叉树: 插入节点: 删除节点: 非递归遍历: 退出: 数组储存学生信息界面 分析查寻效率: 因为二叉树查寻要创建二叉树,而数组查寻只创建一个数组,二叉树的创建时光比较长,所以对于数据量较少的情况下数组的查寻效率比较高。但当数据量增加时,二叉树的查寻优势就显现出来。所以数据量越大的时候,二叉树的查寻效率越高。 四 总结与改进 这个实验工作量还是很大的,做了很久。树状图形输出还是不美观,还需要改进。 一开始打算用栈实现非递归,但是依据书里面的伪代码发觉部分是在C+编译器里运行不了的

24、(即使补充了头文件和数据的定义),所以之后参考了网上的数组非递归,发觉其功能和栈相似。 递归遍历的实现比非递归的遍历真的简单无数。 开始时只看到前三问,所以没有写到储存学生数据的代码,里面还可以用clock()函数加一个计算查寻所要数据时光的代码,让二叉树查寻与数组查寻到效率比较更加直观。 第五篇:数据结构实验报告 数据结构实验报告 指导教师 姓 名班 级学 号实 验 室 黄梅根 钟志伟 0140703 07310325 S331-B 2008-11-29 单链表的插入和删除实验日志 指导教师:黄梅根 实验时光:2008年10月14日 学院 通信学院 专业信息工程 班级0140703 学号07

25、310325姓名 钟志伟 实验室S331-B 实验题目: 单链表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时光性能分析。 实验要求: 建立一个数据域定义为字符串的单链表,在链表中不同意有重复的字符串;依据输入的字符串,先寻到相应的结点,后删除之。 实验主要步骤: 1 分析、理解程序。 2 调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测试程序的如下功能:不同意重复字符串的插入;依据输入的字符串,寻到相应的结点并删除。 3 修改程序: 增加插入结点的功能。 将建立链表的办法改为头插入法。

26、实验结果: 心得体味: 通过本次实验,我了基本上掌握了线性表的逻辑结构和链式存储结构,从中也发觉自己在这方面的知识掌握的还不是很扎实,下来要多看书,将基本的知识要掌握坚固。 二叉树操作实验日志 指导教师:黄梅根 实验时光:2008年 10 月28 日 学院 通信学院 专业信息工程 班级0140703 学号07310325姓名 钟志伟 实验室S331-B 实验题目: 二叉树操作 实验目的: 掌握二叉树的定义、性质及存储方式,各种遍历算法。 实验要求: 采纳二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历的操作,求所有叶子及结点总数的操作。 实验主要步骤; 1. 分析、理解

27、程序。 2. 添加中序和后序遍历算法. 3. 调试程序,设计一棵二叉树,输入完全二叉树的先序序列,用#代表虚结点(空指针),如ABD#CE#F#,建立二叉树,求出先序、中序和后序以及按层次遍历序列,求所有叶子及结点总数。 实验结果: 心得体味: 通过此次实验,我基本掌握了建立二叉树,并且掌握了先序、中序和后序以及按层次遍历的操作,更好的掌握了书本上的知识。 图的遍历操作实验日志 指导教师:黄梅根 实验时光:2008年 11 月 11 日 学院 通信学院 专业 信息工程 班级 0140703 学号 07310325姓名 钟志伟实验室S331-B 实验题目: 图的遍历操作 实验目的: 掌握有向图和

28、无向图的概念;掌握邻接矩阵和邻接链表建立图的存储结构;掌握DFS及BFS对图的遍历操作;了解图结构在人工智能、工程等领域的广泛应用。 实验要求: 采纳邻接矩阵和邻接链表作为图的存储结构,完成有向图和无向图的DFS和BFS操作。 实验主要步骤: 1、分析、理解程序。 2、调试程序。设计一个有向图和一个无向图,任选一种存储结构,完成有向图和无向图的DFS(深度优先遍历)和BFS(广度优先遍历)的操作。 实验结果: 心得体味: 通过本次实验,我掌握了有向图和无向图的一些概念,了解了DFS和BFS对图的遍历操作。 循环链表实验日志 指导教师:黄梅根 实验时光:2008年 11 月 25 日 学院 通信学院 专业 信息工程 班级 0140703 学号 07310325 姓名 钟志伟 实验室S331-B 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握循环链表的基本算法及相关的时光性能分析。 实验要求: 1实现循环链表的建立 2输出循环链表节点的指针序列,要求先输出自身的指针,再输出其指向的 节点的指针。如一个有五个节点的循环链表,各节点地址依次为3109,3290,3106,3595,3390,则输出应为: 3109 3290 3290 3106 3106

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

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