动态查找类模板的设计与实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
成 绩 评 定 表 学生姓名 ************ 班级学号 ************** 专 业 通信工程 课程设计题目 动态查找类模板的设计与实现 评 语 组长签字: 成绩 日期 20 年 月 日 课程设计任务书 学 院 信息科学与工程 专 业 通信工程 学生姓名 *** 班级学号 课程设计题目 动态查找类模板的设计与实现 实践教学要求与任务 实现以二叉排序树为代表的动态查找表类模板,数据元素可以是char ,int,float等多种数据类型,包括以下功能: 采用二叉链表存储结构实现二叉排序树的存储; 实现二叉排序树的建树; 实现二叉排序树结点的插入; 实现二叉排序树结点的删除; 实现二叉排序树结点的查找; 将上述功能作为类的成员函数实现,编写主函数测试上述查找功能。 工作计划与进度安排 第17周:分析题目,查阅课题相关资料,进行类设计、算法设计; 第18周:程序的设计、调试与实现; 第19周:程序测试与分析,撰写课程设计报告,进行答辩验收。 指导教师: 201 年 月 日 专业负责人: 201 年 月 日 学院教学副院长: 201 年 月 日 摘 要 二叉排序树(Binary Sort Tree)或者是一棵空树;或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;动态查找表类模板实现二叉排序树的建树,结点插入,结点删除和结点的查找的功能,并采用二叉链表存储结构实现二叉排序树的存储,采用Visual C++ 6.0的控制台工程和MFC工程分别实现二叉排序树的各种算法。 关键词: 动态查找表;类模板;建树;结点插入;结点删除;结点查找;二叉链表;MFC工程 目 录 1 需求分析 1 2 算法基本原理 1 3 类设计 2 3.1类的概述 2 3.2类的接口设计 3 3.3类的实现 4 4基于控制台的应用程序 12 4.1主函数设计 12 4.2运行结果及分析 15 5基于MFC的应用程序 16 5.1图形界面设计 16 5.2程序代码设计 17 5.3运行结果及分析 21 结论 24 参考文献 25 1 需求分析 用户需要对存储在闪存中的数据进行插入和删除等操作,为了快速响应用户的这些操作 以及保证每次操作完后剩下的数据记录仍为二叉排序数,对每项操作都需要有一个安全高效的算法。查找到原文件中已经存有该用户数据记录,则接下来不需要任何操作。而如 果需要进行插入时,采用在二叉排序树算法需要添加该记录并修改新记录父结点指向它的指 针。所以当新记录要插入的位置和其要修改的指针不在一个扇区时,就一共需要擦除两个扇 区。但因为在插入之前都会首先在其父节点所在的扇区中去寻找空闲存储区。所以大部分情 况下该操作都只需要擦除一个扇区。:如果在原文件中查找不到要删除的用户数据记录,则接下来不需要任何操作。 而如果查找到并且是 2,3,4 的情况,采用在二叉排序树算法需要释放该记录所占用的存储 空间并修改该记录父结点指向它的指针。需要修改的扇区数与插入一样,但因为插入的时候 都优先选择它们在一个扇区,所以大部分情况下该算法都只需要擦除一个扇区。在 5 的情况 下,则需要将被删除记录除了二叉排序树结点左右指针以外的其他值用 S 的值替代,还要放 S 所占用的存储空间并修改 S 的父结点指向它的指针共三处地方。所以在坏的情况下要 擦除三个扇区,但后两处大部分情况下都在一个扇区中,可以减少一些工作量。在上节已经对该查找算法进行了详细的分析,这里就不再重复了。而采用顺序存储的线性表,每次都需要在整个文件所包含的所有扇区进行搜索,它的查找长度与整个 文件所能存储的用户数据记录条数成正比。当文件比较大时,进行线性查找将是非常耗时的。 而对于用户的每一项操作,都要必须先使用查找算法进行查找对应的用户数据记录,所以本 文使用基于二叉排序数的查找算法,无疑在整体性能上具有非常大的优势。 2 算法基本原理 二叉排序树定义: 二叉排序树是这样的树,结点左边的值都小于结点的值,结点右边的值都大于结点的值,所以按照二叉树的中序遍历的话,得到的的将是按顺序排列的值。 二叉排序树的主要操作: 1):建立二叉树 用插入函数依次插入用户输入的序列,最后再中序遍历并输出显示 2):插入 插入的操作非常简单,从根结点开始,如果插入值大于根节点值,则向右遍历,如果小于根节点值,则想左遍历,知道遇到一个叶子结点为止。按插入值大于叶子则将插入值作为叶子结点的右孩子,否则左孩子。中间过程中如果遇到跟插入值相等

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档