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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(在二叉排序树中查找关键字为key的记录.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

在二叉排序树中查找关键字为key的记录.docx

1、在二叉排序树中查找关键字为key的记录学院名称专业班级实验成绩学生姓名学号实验日期课程名称数据结构实验题目4 查找一、实验目的与要求通过本次实验,掌握查找表上的有关查找方法,并分析时间复杂度。二、主要仪器设备Cfree三、实验内容和原理2.实习题1问题描述编写程序实现下面运算:在二叉排序树中查找关键字为key的记录。输入排序二叉树,以及要查找的数字(节点)。输出显示该节点是否存在。存储结构有序表采用顺序方式存储。算法的基本思想若二叉排序树为空树,查找失败,返回null或0;否则,将key与根节点的关键字比较: 若key=根节点的关键字,查找成功; 若key根节点的关键字,继续在右子树中查找。参

2、考源程序#include #include #define NULL 0typedef int KeyType;typedef struct KeyType key; ElemType; /元素类型typedef struct BiTNodeElemType data; struct BiTNode *lchild,*rchild;BiTNode,*BiTree;BiTree searchBST(BiTree bt,KeyType key)/*在二叉排序树 bt 中查找其关键字等于给定值的结点是否存在,并输出相应信息*/ if (bt=NULL) return NULL;/在排序二叉树中进行递

3、归查找 else if (bt-data.key=key) return bt; else if (keydata.key) return searchBST(bt-lchild,key); else return searchBST(bt-rchild,key);void insertBST(BiTree *bt,BiTree s)/*在二叉排序树中插入一个新结点,即依次插入输入的数*/ if (*bt=NULL) *bt=s; else if (s-data.keydata.key) insertBST(&(*bt)-lchild),s); else if (s-data.key(*bt)

4、-data.key) insertBST(&(*bt)-rchild),s);main() char ch; KeyType key; BiTree bt,s; int i=0;/*建立一棵二叉排序树,元素从键盘按先序输入,直到输入关键字等于-1为止*/ printf(n请输入元素(-1:结束):n);/以-1为结束 scanf(%d,&key); bt=NULL; while (key!=-1) s=(BiTree)malloc(sizeof(BiTNode); (s-data).key=key;s-lchild=s-rchild=NULL; insertBST(&bt,s); scanf(

5、%d,&key); /while/*二叉排序树的查找,可多次查找,并输出查找的结果*/ do printf(n输入你想要查找的元素:); scanf(%d,&key); s=searchBST(bt,key); if (s!=NULL) printf(n成功! 这个等价元素是 %d.n,s-data.key); else printf(n没有找到!n); printf(n是否继续?(y/n):); scanf(%c,&ch); ch=getchar(); while (ch=y | ch=Y) ; getchar();/main实验结果:五、实验结果与分析(2)习题1:采用先序遍历的方式生成二

6、叉树,程序中多次使用的递归的算法。使程序看起来很简洁。如果把头结点的生成也放到生成树的函数中,会使程序看起来更加调理。六、实验心得及体会查找是很多程序的基础,很多程序中都会用到查找。比如在线性表的插入和删除时要查找合适的位置。所以学好查找是很必要的。本次实验只要是采取了这般查找的方法。其实还有很多查找的方法。如顺序查找,索引顺序表查找。每种查找方法各有优劣。如折半查找的平均查找长度小于顺序查找,但它要求查找的表为有序的。所以需将无序表排序成有序表。这又会浪费运行时间。编写程序时遇到了很多的困难,如先序生成树更好还是中序生成更好。太原理工大学学生实验报告学院名称计算机科学与技术专业班级计Z100

7、2班实验成绩学生姓名郑海兵学号2010001420实验日期1月2日课程名称数据结构实验题目5 内排序一、实验目的与要求通过本次实验,掌握线性表的排序方法,并分析时间复杂度。二、主要仪器设备Cfree三、实验内容和原理问题描述设计一个用链表表示的直接选择排序算法,并用程序实现。输入n个数据。输出n个数据由小到大排列的结果。存储结构待排序记录顺序存储。算法的基本思想已知待排序初始序列用单链表存储,头指针head指向第一个结点,从这个待排序列中找出最小结点,插入head之后,用r来指示。r以前为已排序序列,r以后为未排序序列。再从未排序序列中找出最小结点插入r的后面,让r指向这个结点。反复执行这个过

8、程,直到排好序。参考源程序#include#include int n;struct Numberint data;struct Number* next;struct Number* Creat_H(int k)/创建单链表 struct Number* L;struct Number* p; p=(struct Number*)malloc(sizeof(struct Number);L=p;int temp;int i;printf(n请输入元素:);for(i=1;idata=temp;if(i=k)p-next=NULL;break;p-next=(struct Number*)ma

9、lloc(sizeof(struct Number);p=p-next;/forreturn L;/struct Number* Creat_Hstruct Number* Sort(struct Number* p)/直接选择排序struct Number* max;struct Number* min;struct Number* temp;struct Number* r;r=p;int flag=0;doif(flag=0)/第一次找最小数时的初始化temp=min=max=r;elsetemp=min=max=r-next;/dowhile(1)/找出最小数if(min-datane

10、xt-data)if(max-next-next!=NULL)max=max-next;elsebreak;/ifelsetemp=max;/相当于temp-next=minmin=max-next;if(max-next-next!=NULL)max=max-next;elsebreak;/else/while(1) if(temp!=min)if(min-next=NULL)temp-next=NULL;elsetemp-next=min-next;if(flag=0)r=min;r-next=p;p=r;elsemin-next=r-next;r-next=min;r=min;/ifel

11、se/初始化时min就已经指向了最小数if(flag=0)/第一次找到最小数r=min;p=r;elser=min;/elseflag+;/又排好一个数if(flag=n-1)return p;while(1);int main()struct Number* H;printf(n请输入元素个数 n (n=2):);/输入数据(不得少于2个)scanf(%d,&n);while(ndata);H=H-next;printf(n);system(pause);return 0;getchar();五、实验结果与分析习题1:这题要从前面和后面同时进行处理,只有这样才能保证时间复杂度为O(N)。六、实验心得及体会排序有很多种方法,如冒泡排序、直接插入排序、希尔排序、归并排序、选择排序等等。各个排序的方法各有优劣,时间复杂度各不相同。习题二中使用的快速排序方法是冒泡排序的改进方法,时间复杂度比较小。但若初始纪录序列按关键字有序或基本有序时,快速排序退化为冒泡排序。在实验中学习到很多,每次调试程序都进步不少,以后会多思考,多读程序,使思维更加缜密,调理和清晰,同时也提高自己的提高动手能力。

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

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