




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验报告姓课程名称:院(系专业/年级:实验四查找一、实验目的1.掌握顺序表的查找方法,尤其是折半查找方法;2.掌握二叉排序树的查找算法。二、实验预习内容请在上机前认真阅读教材及实验指导书,并在以下空白处填写相应的内容。1.请写出简单顺序查找算法。intseq_search(elementtypeA,intn,keytypex)i=n;A0.key=x;while(Ai.key=x)i-;returni;2.请写出有序表二分(折半)查找算法。(1)非递归算法intbin_search(elementtypeA,intn,keytypex)intmid,low=0,high=n-1;/初始化查找区
2、域while(low=high)mid=(low+high)/2;if(x=Amid.keyreturnmid;elseif(xhigh)return-1;/查找失败elsemid=(low+high)/2;/求解中间元素的下标if(x=Amid.key)returnmid;/查找成功elseif(xkeykey)insert(T-lchild,S);/插入到T的左子树中elseinsert(T-rchild,S);/插入到T的右子树中3)请写出二叉排序树构造的算法。voidcreate_bst(Bnode*&T);/通过插入结点构造二叉排序树的算法Bnode*u;elementtypex;T
3、=NULL;cinx;/初始化根指针并读入第一个元素值While(x!=end_of_num)/x不是结束符时u=newBnode;u-data=x;/产生新结点并装入数据u-lchild=NILL;u-rchild=NULL;/设置左、右孩子指针为空insert(T,u);/插入结点到二叉排序树T中cinx;/读入下一个元素的值)请写出二叉排序树查找的算法。非递归算法:Bnode*bst_search(Bnode*T,keytypex)Bnode*P=T;/P指向根while(p!=NULL)if(x=p-key)returnp;/查找成功elseif(xkey=p-lchild);/到左子
4、树中继续查找elsep=p-rchild;/到右子树中继续查找returnp;/返回结果可能为空,也可能非空递归算法:Bnode*bst_search(Bnode*T,keytypex)if(T=NULL|t-key=x)returnT;/子树为空或已经找到时均可结束elseif(xkey)returnbst_search(T-lchild,x);/左子树中查找的结果就是函数的结果elsereturnbst_search(T-rchild,x);/右子树中查找的结果就是函数的结果三、上机实验1.实验内容。1)建立一个顺序表,用顺序查找的方法对其实施查找;2)建立一个有序表,用折半查找的方法对其
5、实施查找;3)建立一个二叉排序树,根据给定值对其实施查找;4)对同一组数据,试用三种方法查找某一相同数据,并尝试进行性能分析。2.实验源程序。(1)#include#include#definemax100intx;typedefstructintdatamax;intlistlen;seqlist;voidinitial_list(seqlist*L)L-listlen=0;voidlist_creat(seqlist*L)inti;L-listlen+;i=L-listlen;L-datai=x;intlast_search(seqlist*L)inti;i=L-listlen;L-dat
6、a0=x;while(L-datai!=x)i-;returni;intfirst_search(seqlist*L)inti,n;n=L-listlen;for(i=1;idatai=x)returni;return-1;intbin_search(seqlist*L)intmid,low=1,high=L-listlen;while(lowdatamid)returnmid;elseif(xdatamid)high=mid-1;elselow=mid+1;return-1;intmain(void)seqlist*L;L=(seqlist*)malloc(sizeof(seqlist);i
7、nta,b,c;initial_list(L);printf(你想创建有序的查找表(以-1结束):);scanf(%d,&x);while(x!=-1)list_creat(L);scanf(%d,&x);printf(请输入你想查找的数:);scanf(%d,&x);printf(顺序查找-你所要找数的下标号:);a=first_search(L);if(a=-1)printf(没有你所要查的数!);elseprintf(%d,a);printf(n);printf(倒序查找-你所要找数的下标号:);b=last_search(L);if(b=0)printf(没有你所要查的数!);else
8、printf(%d,b);printf(n);printf(折半查找-你所要找数的下标号:);c=bin_search(L);if(c=-1)printf(没有你所要查的数!);elseprintf(%d,c);printf(n);return0;(2)#include#include#includetypedefstructBTnodeintdata;structBTnode*lchild,*rchild;BTnode,*Bnode;voidinsert(Bnode&T,BnodeS)if(T=NULL)T=S;elseif(S-datadata)insert(T-lchild,S);els
9、einsert(T-rchild,S);voidcreate_bat(Bnode&T)Bnodeu;intx;T=NULL;printf(putanumber:);scanf(%d,&x);while(x!=-1)u=(BTnode*)malloc(sizeof(BTnode);u-data=x;u-lchild=NULL;u-rchild=NULL;insert(T,u);printf(putanumber:);scanf(%d,&x);Bnodebst_search(BnodeT,intx)if(T=NULL|T-data=x)returnT;elseif(T-data)x)returnbst_search(T-lchild,x);elsereturnbst_search(T-rchild,x);intmain()intx;BnodeT,p;printf(请先建立一棵二叉排序树:);printf(n);create_bat(T);printf(请输入你要查找的数字:);scanf(%d,&x);p=bst_search(T,x);if(p!=NULL)printf(已找到你
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 倒板施工合同方案的施工验收标准3篇
- 事业单位采购合同中的甲方权益3篇
- 外卖员雇佣合同的福利待遇3篇
- 守护校园安全3篇
- 安全之责校庆保障3篇
- 安全承诺运动更放心3篇
- 完整路灯安装工程施工协议书2篇
- 工作合同解除协议3篇
- 保税区买卖合同的问题与解决3篇
- 绿色环保与可持续发展的投资政策与环境治理分析考核试卷
- (高清版)JTGT 5214-2022 在用公路桥梁现场检测技术规程
- DZ∕T 0215-2020 矿产地质勘查规范 煤(正式版)
- 妇科腹腔镜手术术前宣教
- 农贸市场消防应急预案演练总结
- 2023年湖北宜昌高新区社区专职工作人员(网格员)招聘考试真题及答案
- 外贸谈判知识分享课件
- 《患者疼痛管理》课件
- 基于AI人工智能的智慧园区融合感知平台建设方案
- JB T 7689-2012悬挂式电磁除铁器
- 课件-错账更正
- 现代汉语语料库词频表CorpusWordlist
评论
0/150
提交评论