数据结构实验三:BST动态查找表汇总.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话: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的节点个数 //10个数据 50 输出:查找成功,查找次数1 输入:1 输出:查找成功,查找次数6 输入:3 输出:查找成功,查找次数4 输入:100 输出:查找成功,查找次数5 输入:19 输出:查找失败 ②.只有左子树的情况 10 //BST的节点个数 //10个数据 ,查找次数1 输入:12 输出:查找成功,查找次数6 输入:35 输出:查找成功,查找次数4 输入:95 输出:查找成功,查找次数5 输入:19 输出:查找失败 ③.错误的节点数输入 -2 //BST的节点个数 10 //BST的个数 //10个数据 //结点的初始化 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树:输入节点数后,依次输入每个结点的值,将第一个结点作为根结点,插入一个数,这个数与根节点先比较,若小于则再与根结点的左子树相比较,若大于则与根节点的右子树相比较。比较时,若小于根结点且根结点的左子树为空,则这个数为根结点左子树的值,若小于根结点又大于根结点的左子树,则运用指针将根结点的左指针指向这个值得地址,这个值地址的指针再指向原来根结点左子树;大于的情况同理。 查找:设置一个计数器,每查找一次则加一。从根节点开始,在BST中检索值K。如果根节点存储的值为K,则检索结束。如果不是,必须检索数的更深的一层。BST的效率在于只需检索两棵子树之一。如果K小于根节点的值,则只需检索左子树;若果K结点大于根结点的值,则检索右子树。这个过程一直持续到K被知道或者遇到一个叶子结点为止。如果叶子结点仍没有发现K,那么K就不在BST中。 4.程序的流程 程序由三个模块组成: 输入模块:输入结点数目初始数据,构建二叉查找树 查找模块:判断需要查找的值是否在该BST中 输出模块:输出查找成功与否,并输出比较的次数 详细设计 1.物理数据类型 动态查找表的数据为小数或整数,用float类型保存。 树的ADT具体实现 //初始化二叉树 bool InitBST(BST *b) { b-root = NULL; return true; } //销毁BST bool clearBST(BSTNode * n) { if (n) return false; if (n-lchild) clearBST(n-lchild); if (n-rchild) clearBST(n-rchild); free(n); return true; } //初始化节点 bool InitBSTNode(BSTNode * n) { n = (BSTNode *)malloc(sizeof(BSTNode)); n-lchild = NULL; n-rchild = NULL; return true; } 结点的ADT具体实现 BinNodePtr(){lc=rc=NULL}//结点的

文档评论(0)

过各自的生活 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档