实验六指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六:查找实验实验任务书
一、实验目的及要求
(1)熟练掌握各种静态查找表方法(顺序查找、折半查找、索引顺序表等);
(2)熟练掌握二叉排序树的构造方法和查找算法;
(3)了解和掌握其它查找方法。
二、实验内容
1.顺序查找算法的实现(必做);
2.折半查找算法的实现(必做);
3.二叉排序树的构造、查找、插入及删除算法的实现(必做);
4.Hash表查找算法实现(选做)。
三、实验准备
(1) 计算机设备;
(2) 程序调试环境的准备,如Devc++环境;
(3) 实验内容的算法分析与代码设计与分析准备。
四、实验背景知识
1. 查找的概念
查找是计算机操作中经常做的操作,日常我们使用计算机时90%上的操作都是在做查找,如我们在搜索引擎上搜索某一感兴趣的内容。查找分为静
态查找(仅作查询和检索操作)和动态查找(在查询之后,还需要将“查询”
结果为“不在查找表中”的数据元素插入到查找表中;或者,从查找表中删
除其“查询”结果为“在查找表中”的数据元素)。
2.查找表的存储结构
我们可以将查找表看做成线性表,所以查找表的存储结构即为线性表的存储结构,可以使用顺序存储,也可用链式存储方式表示查找表。根据不同的查找方法,选用合适的存储方式表示查找表。
五、设计与实现指导
查找表的ADT
分析问题的第一步仍然是抽象出数据元素及其之间的关系,同时考虑其上的基本操作,这就是ADT研究的内容。
//请同学们给出线性表的ADT,必须有前面介绍的基本操作
ADT SearchList{
数据://完成.......
运算:
//完成.......
}
1.查找表的有关操作
(1)顺序查找
可以分别用顺序表和链表表示查找表,完成顺序查找。
//完成对应函数.int SqSearch(List l,int x)......
(2)折半查找
由于折半查找要求表中的数据是有序的,所以如果用折半查找,首先确保数据有序的,其次表应该使用顺序表表示。
//完成对应函数.....int BiSearch(List l,int x)....
(3)二叉排序树
根据二叉排序树的特点,可以先构造一个二叉排序树(用插入方法创建)、然后对其进行中序遍历即得一个递增序列,并对其完成删除结点的操作。
(4)Hash表创建及查找
自己设计一个哈希函数及处理冲突的方法,构造一个哈希表,并对给定的数据进行查找操作。
(3)主程序模块定义(建议用菜单驱动程序)
主程序结构:
菜单显示;
选择操作;
下为二叉排序树程序运行部分界面图:
(4)测试数据及测试结果
1)//要求对每个必做的实现给出测试数据并测试
注意:总结部分要有主要算法的复杂度分析。