- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告
姓
院(系
课程名称:
专业/年级:
实验四
——查找
一、实验目的
掌握次序表的查找方法,尤其是折半查找方法;
掌握二叉排序树的查找算法。
二、实验预习内容
请在上机前仔细阅读教材及实验指导书,并在以下空白处填写相应的内容。
请写出简单次序查找算法。
intseq_search(elementtypeA[],intn,keytypex)
{
i=n;A[0].key=x;
while(A[i].key=x)i--;
returni;
}
请写出有序表二分(折半)查找算法。
(1)非递归算法
intbin_search(elementtypeA[],intn,keytypex)
{intmid,low=0,high=n-1;//初始化查找地区
while(low=high)
{mid=(low+high)/2;
精品文库
if(x==A[mid].keyreturnmid;
elseif(xA[mid.key])high=mid-1;
elselow=mid+1;
}
return-1;//返回查找失败的标志
}
(2)递归算法
intbin_search(elementtypeA[],intlow,inthigh,keytypex)
{intmid;
if(lowhigh)return-1;//查找失败
else{mid=(low+high)/2;//求解中间元素的下标
if(x==A[mid].key)returnmid;//查找成功
elseif(xA[mid].key)
returnbin_search(A,low,mid-1,x);//将在左边地区查找的结果作为在整个地区的查找结果返回
elsereturnbin_search(A,mid+1,high,x);//将在右边地区查找的结果作为在整个地区的查找结
果返回
}
}
2
精品文库
二叉排序树查找算法:
1)请写出二叉排序树结点的结构体定义语句。
typedefchardatatype;
typedefstructnode
{keytypekey;datatypedata;
structnode*lchild,*rchild;
}BSTnode;
2)请写出二叉排序树中插入结点的算法。
voidinsert(Bnode*T,Bnode*S)//将指针S所指结点插入到二叉排序树T中
{
if(T==NULL)
T=S;//插入到空树时,插入结点成为根结点
elseif(S-keyT-key)
insert(T-lchild,S);//插入到T的左子树中
elseinsert(T-rchild,S);//插入到T的右子树中
}
3)请写出二叉排序树结构的算法。
voidcreate_bst(Bnode*T);//经过插入结点结构二叉排序树的算法
{Bnode*u;elementtypex;
T=NULL;cinx;//初始化根指针并读入第一个元素值
3
精品文库
While(x!=end_of_num)//x不是结束符时
{u=newBnode;u-data=x;//产生新结点并装入数据
u-lchild=NILL;u-rchild=NULL;//设置左、右孩子指针为空
insert(T,u);//插入结点到二叉排序树T中
cinx;//读入下一个元素的值
}
}
4)请写出二叉排序树查找的算法。
非递归算法:
Bnode*bst_search(Bnode*T,keytypex)
{
Bnode*P=T;//P指向根
while(p!=NULL)
if(x==p-key)returnp;//查找成功
elseif(xp-key=p-lchild);//到左子树中持续查找
elsep=p-rchild;//到右子树中持续查找
returnp;//返回结果可能为空,也可能非空
}
4
精品文库
递归算法:
Bnode*bst_search(Bnode*T,keytypex)
{
if(T==NULL||t-key=x)
returnT;//子树为空或已经找到时均可结束
elseif(xT-key)
returnbst_search(T-lchild,x);//左子树中查找的结果就是函数的结果
elsereturnbst_search(T-rchild,x);//右子树中查找的结果就是函数的结果
}
三、上机实验
实验内容。
1)成立一个次序表,用次序查找的方法对其实施查找;
2)成立一个有序表,用折半查找的方法对其实施查找;
3)成立一个二叉排序树,根据给定值对其实施查找;
4)对同一组数据,试用三种方法查找某一相同数据,并尝试进行性能剖析。
实验源程序。
(1)
#includestdio.h
#includestdlib.h
#definemax
您可能关注的文档
最近下载
- 水泥基工程复合材料ECC的研究与应用论文.pdf VIP
- 血透室品管圈.pptx
- 《新能源汽车维护与保养》教案 第11课 车身电气设备维护与保养.doc VIP
- GB 20951-2020 油品运输大气污染物排放标准(高清版).doc VIP
- 2025-2026学年小学信息技术(信息科技)三年级上册湘科版(2024)教学设计合集.docx
- 优质纪念中国人民抗日战争暨世界反法西斯战争胜利80周年PPT课件.pptx
- 第八章 现代生物技术在环境保护中的应用.ppt VIP
- 千年古县申报材料-牟平.doc VIP
- 慢性咳嗽诊治指南ppt课件.pptx VIP
- 企业安全生产风险辨识评估管控指导手册-件杂货码头.pdf VIP
文档评论(0)