- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实用标准文案
精彩文档
学院名称
专业班级
实验成绩
学生姓名
学号
实验日期
课程名称
数据结构
实验题目
4 查找
一、实验目的与要求
通过本次实验,掌握查找表上的有关查找方法,并分析时间复杂度。
二、主要仪器设备
Cfree
三、实验内容和原理
2.实习题1
[问题描述]
编写程序实现下面运算:在二叉排序树中查找关键字为key的记录。
[输入]
排序二叉树,以及要查找的数字(节点)。
[输出]
显示该节点是否存在。
[存储结构]
有序表采用顺序方式存储。
[算法的基本思想]
若二叉排序树为空树,查找失败,返回null或0;
否则,将key与根节点的关键字比较:
若key=根节点的关键字,查找成功;
若key根节点的关键字,继续在左子树中查找;
若key根节点的关键字,继续在右子树中查找。
[参考源程序]
#include malloc.h
#include stdio.h
#define NULL 0
typedef int KeyType;
typedef struct {
KeyType key;
}ElemType; //元素类型
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree searchBST(BiTree bt,KeyType key){
/*在二叉排序树 bt 中查找其关键字等于给定值的结点是否存在,并输出相应信息*/
if (bt==NULL) return NULL;//在排序二叉树中进行递归查找
else if (bt-data.key==key) return bt;
else if (keybt-data.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.key(*bt)-data.key) insertBST(((*bt)-lchild),s);
else if (s-data.key(*bt)-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(%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:采用先序遍历的方式生成二叉树,程序中多次使用的递归的算法。使程序看起来很简洁。如果把头结点的生成也放到生成树的函数中,会使程序看起来更加调理。
六、实验心得及体会
查找是很多程序的基础,很多程序中都会用到查找。比如在线性表的插入和删除时要查找合适的位置。所以学好查找是很必要的。本次实验只要是采取了这般查找的方法。其实还有很多查找的方法。如顺序查找,索引顺序表查找。每种查找方法各有优劣。如折半查找的平均查
您可能关注的文档
最近下载
- (高清版)B 26410-2011 防爆通风机.pdf VIP
- 新技术揭细菌生物被膜结构细节.pdf VIP
- 国家标准 GBT 895.2-1986 轴用钢丝挡圈.pdf VIP
- 景观标准做法手册(硬景篇).docx VIP
- HGT 3973-2023 一般用途钢丝绳芯阻燃输送带.pdf VIP
- 2023-2024学年浙江省嘉兴市高一下学期6月期末地理试题(解析版).docx VIP
- 2025年山东黄金集团井下技能工人招聘(2025人)笔试历年参考题库附带答案详解(10卷合集).docx
- SL 339-2006水库水文泥沙观测规范.pdf
- 抽搐护理常规.pptx
- 深圳市南山外国语学校新初一分班英语试卷含答案.doc VIP
文档评论(0)