本文是[数据结构基础系列(8):查找]课程的第二组实践项目。
本文针对:
9. B-树
10. B+树
11. 哈希表——散列结构
12. 哈希表的运算
13. 拓展:谷歌搜索的数据结构
纸上谈兵:“知原理”检验题目
[参考解答]
1、给定序列{4, 9, 0, 1, 8, 6, 3, 5, 2, 7}
(1)创建对应的3阶B-树b,请画出构造过程
(2)从b中分别删除关键字为8和1的节点,画出其过程
2、建立序列{16, 74, 60, 43, 54, 90, 46, 31, 29, 88, 77}的哈希表,装填因子定为0.8,哈希函数为h(k)=key%p,p=11
(1)采用线性探查法解决冲突,请写出哈希表
(2)在上述哈希表中查找关键字为29的元素
(3)在上述哈希表中删除关键字为77的元素,再将其装入
(4)采用拉链法解决冲突,请重做(1)-(3)
课后上机实践
【项目1 - 验证算法】
运行并本周视频中所讲过的算法,观察结果并领会算法。
1、认真阅读并验证哈希表实施查找的相关算法,写程序建立序列{16, 74, 60, 43, 54, 90, 46, 31, 29, 88, 77}的哈希表,装填因子定为0.8,哈希函数为h(k)=key%p,p=11,采用线性探查法解决冲突。测试中:
(1)输出建立的哈希表;
(2)完成关键字为29的元素的查找;
(3)在上述哈希表中删除关键字为77的元素,再显示哈希表。
[参考解答]
【项目2 - 用哈希法组织关键字】
已知一个关键字序列为if、while、for、case、do、break、else、struct、union、int、double、float、char、long、bool,共15个字符串,哈希函数H(key)为关键字的第一个字母在字母表中的序号,哈希表的表长为26。
(1)若处理冲突的方法采用线性探测法,请设计算法,输出每个关键字对应的H(key),输出哈希表,并求成功情况下的平均查找长度。
(2)若处理冲突的方法采用链地址法,请设计算法,输出哈希表,并计算成功情况和不成功情况下的平均查找长度。
[参考解答]
【项目3 - B-树的基本操作】(选看)
实现B-树的基本操作。基于序列{4, 9, 0, 1, 8, 6, 3, 5, 2, 7}完成测试。
(1)创建对应的3阶B-树b,用括号法输出b树。
(2)从b中分别删除关键字为8和1的节点,用括号法输出删除节点后的b树。
[参考解答]