- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验三:BST动态查找表研讨
HUNAN UNIVERSITY
课程实习报告
题 目: BST实现动态查找表
学生姓名:
学生学号:
专业班级:
指导老师: 李晓鸿
完成日期: 2015 11 21
一、需求分析
1、程序任务:
本程序是利用二叉查找树(BST)来实现;二叉树使用链式结构(二叉链表)实现,本程序要实现BST的构建,查找BST树中元素中两个功能。
2、输入形式:
输入整数n//BST的节点个数n。
输入n个数,其取值范围为(0, 216),对非法输入做处理。
3、输出形式:
若查找成功 整数m(次数)//返回成功和查找时比较的次数
若查找不成功 整数m(次数) //返回不成功和查找时比较的次数
若输入错误 “输入了无效的元素”
4、测试数据:
①.正常的输入
10 //BST的节点个数
50 1 3 2 78 65 100 59 43 18 //10个数据
输入:50
输出:查找成功,查找次数1
输入:1
输出:查找成功,查找次数6
输入:3
输出:查找成功,查找次数4
输入:100
输出:查找成功,查找次数5
输入:19
输出:查找失败
②.只有左子树的情况
10 //BST的节点个数
100 1 12 35 43 95 54 82 78 93 //10个数据
输入:1
输出:查找成功,查找次数1
输入:12
输出:查找成功,查找次数6
输入:35
输出:查找成功,查找次数4
输入:95
输出:查找成功,查找次数5
输入:19
输出:查找失败
③.错误的节点数输入
-2 //BST的节点个数
输出:错误的结点数输入
④.错误的结点值的输入(字母)
10 //BST的结点个数
1 q 2 3 4 5 6 7 8 9 //10个数据
输出:无效的结点输入
⑤.错误的结点值的输入(负数)
10 //BST的结点个数
1 -2 2 3 4 5 6 7 8 9 //10个数据
输出:无效的结点输入
二叉树中任意结点的值大于左节点的值,小于右节点的值,满足BST树的性质,所以用BST树来实现。
二.概要设计
1.抽象数据类型
二叉树中任意结点的值大于左节点的值,小于右节点的值,满足BST树的性质,同时本题在建树时需要大量的插入操作,运用链式结构比较方便,所以用链式结构的二叉树来满足BST树的构建。
2.ADT
①.二叉树的ADT:
数据对象D:D是BinNode类的数据元素的集合
数据关系R:
若D为空集,则称为空树 。
否则:
(1) 在D中存在唯一的称为根的数据元素root;
(2) 当n1时,其余结点可分为m (m0)个互不相交的有限集T1, T2, …, Tm,其中每一棵子集本身又是一棵符合本定义的树,称为根root的子树。
基本操作:
bool InitBST(BST *b) //初始化二叉树
bool InitBSTNode(BSTNode * n)//初始化节点
bool clearBST(BSTNode * n) //销毁BST
②结点的ADT
数据对象:包含结点的值,同时包含结点的左右指针
数据关系:每个结点都有各自的值
若结点左右指针为空,则该节点称为叶子结点
基本操作:
//结点的初始化
BinNodePtr(){lc=rc=NULL}
BinNodePtr(Elem e,BinNodePtr* l=NULL;BinNodePtr* r=NULL)
{it=e;lc=l;rc=r;}
//判断是否是叶子结点
bool isleaf(){return(lc==NULL)(rc==NULL)};
3.算法的基本思想
构建BST树:输入节点数后,依次输入每个结点的值,将第一个结点作为根结点,插入一个数,这个数与根节点先比较,若小于则再与根结点的左子树相比较,若大于则与根节点的右子树相比较。比较时,若小于根结点且根结点的左子树为空,则这个数为根结点左子树的值,若小于根结点又大于根结点的左子树,则运用指针将根结点的左指针指向这个值得地址,这个值地
您可能关注的文档
最近下载
- 新人音版二年级音乐下册优秀教学设计《共产儿童团歌》教案.doc VIP
- 肝硬化诊治指南2025年.docx
- 初中数学新人教版八年级上册13综合与实践 确定匀质薄板的重心位置教学课件2025秋.pptx VIP
- 08【人教版英语字帖】八年级上册单词表衡水体字帖(新目标含音标).pdf VIP
- 2023年10月自考06089劳动关系与劳动法押题及答案.pdf VIP
- 新教科版小学科学实验目录五年级上册.docx VIP
- 合理用药用药班会PPT课件.pptx VIP
- 结构设计弯矩二次分配法计算(表格自带公式).xls VIP
- 规范言行从我做起主题班会.pptx
- PanelView Plus 7 Performance 终端用户手册.pdf VIP
文档评论(0)