实验五:查找算法应用.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验五:查找算法应用

实验报告学院(系)名称:计算机与通信工程学院姓名* *学号**** ****专业计算机科学与技术班级2015级*班实验项目实验五: 查找算法应用 课程名称数据结构与算法课程代码0661013实验时间年 月 日第节实验地点7-***考核标准实验过程25分程序运行20分回答问题15分实验报告30分特色功能5分考勤违纪情况5分成绩成绩栏其它批改意见: 教师签字:考核内容评价在实验课堂中的表现,包括实验态度、编写程序过程等内容等。□功能完善, □功能不全□有小错□无法运行○正确○基本正确○有提示○无法回答○完整○较完整○一般○内容极少○无报告○有○无○有○无 一、实验目的实验目的:理解二叉排序树、AVL 树的查找、插入、删除、建立算法的思想及程序实现;掌握散列存储结构的思想,能选择合适散列函数,实现不同冲突处理方法的散列表的查找、建立。能运用所学查找结构与算法等解决实际问题。二、实验题目与要求1.折半查找算法 1)问题描述:从键盘读入一串整数和一个待查关键字,查找在该整数串中是否有这个待查关键 字。如果有,输出它在整数串中的位置;如果没有,输出-1 2)实验要求: ①利用折半查找算法查找 ②用递归和非递归两种方式实现折半查找算法 3) 实现提示: ①递归实现参考书上折半查找算法的实现 ②非递归算法利用栈实现 2.构造二叉排序树,并进行中序遍历(实验类型:综合型) 1)问题描述:从键盘读入一串整数构造一棵二叉排序树,并对得到的二叉排序树进行中序遍历, 得到有序序列。 2)实验要求:该二叉排序树以二叉链表存储 3)实现提示:二叉排序树的构成,可从空的二叉树开始,每输入一个结点数据,就建立一个新 结点插入到当前已生成的二叉排序树中,所以它的主要操作是二叉排序树插入运算。在二叉排序树 中插入新结点,只要保证插入后仍符合二叉排序树的定义即可。 3.哈希表查找 1)问题描述:针对某个集体的“人名”构造哈希表,解决按“人名”进行查找的索引结构。 2)实验要求:要求表的平均查找长度不超过 R(R 可以从键盘输入确定),完成相应的建表和 查表程序。 4. 拼写检查 1)问题描述:现在有一些英语单词需要做拼写检查,你的工具是一本词典。需要检查的单词, 有的是词典中的单词,有的与词典中的单词相似,你的任务是发现这两种情况。单词 A 与单词 B 相 似的情况有三种: ① 删除单词 A 的一个字母后得到单词 B; ② 用任意一个字母替换单词 A 的一个字母后得到单词 B; ③ 在单词 A 的任意位置增加一个字母后得到单词 B。 2)实验要求:发现词典中与给定单词相同或相似的单词。 实验过程与实验结果 应包括如下主要内容:数据结构定义 数表的查找方法通常适用于动态集合。动态集合的特点是集合结构本身在查找过程中动态生成,即对于给定值k,若集合中存在关键字等于k的记录,则查找成功,否则插入关键字为k的新记录。 二叉排序树,又叫二叉查找树或二叉搜索树。它或者是一棵空树,或者是一棵具有如下特征的非空二叉树: 1)若它的左子树非空,则左子树上所有节点的关键字均小于根节点的关键字。 2)若它的右子树非空,则右子树上所有节点的关键字均大于根节点的关键字。 3)左、右子树也分别是二叉排序树。 平衡二叉树的定义是:若一棵二叉排序树中每个节点的左、右子树的高度之差的绝对值不超过1,则称这样的二叉排序树为平衡二叉树。算法设计思路简介1、数据有序,用折半查找法,通过即可快速找到关键字。2、二叉树表实际上就是个二叉树,就像建立一个普通的二叉树一样建立树,只是在插入节点的时候要和当前节点的值比较,若当前节点为空则插入当前节点;否则,若小于当前值则插入左子树大于当前节点就插入右子树。对建立好的树进行中序遍历即可得到有序序列。3、人的姓一般有很大可能性相同,但是人名的第二个字一般是不同的,既然人名示例是拼音形式姑且认为第二个字母即为第二个字。将其ASCLL码模49作为哈希函数,将各人名分类存在不同的链表中,提高查询效率。算法描述:可以用自然语言、伪代码或流程图等方式4、以单词中字母的数目为标准将单词分类,若字母数想等或相差一则进行细致的比较(下面有详细描述),否则根本不相似。1、输入a[i],keyi = 1,2,3,…,nmid = key? = ≠ k a[mid]? 是 否 low = high? 是 否输出mid输出-1结束2、(1)创建普通二叉树节点。(2)输入要插入的值k。(3)将k插入二叉树节点中,若当前节点为空则申请节点空间并将k存入当前节点的data域中,令其左右子树均为空;若当前节点不为空且k小于当前节点的data值,则将k存入当前节点的左子树中去,若当前节点不为空且k大于当前节点的data值,则将k存入当前节点的右子树中去。 (4)中序遍历此二叉树。3、

文档评论(0)

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

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

1亿VIP精品文档

相关文档