数据结构教学课件作者李学刚电子课件源代码单元7查找课件.pptVIP

  • 174
  • 0
  • 约1.75万字
  • 约 48页
  • 2016-12-26 发布于广东
  • 举报

数据结构教学课件作者李学刚电子课件源代码单元7查找课件.ppt

(1)线性探查法:将哈希表T[0…n-1]看成是一个循环向量,若初始探查的地址为d(即H(key)=d),则最长的探查序列为:d,d+l,d+2,…,n-1,0,1,…,d-1。即探查时从地址d开始,首先探查T[d],然后依次探查T[d+1] 直到T[n-1],此后又循环到T[0]直到T[d-1]为止。 探查过程终止于三种情况: ①若当前探查的单元为空,对于构造哈希表则将key写入其中,对于查找则表示查找失败; ②若当前探查的单元中含有key,对于构造表则表示该记录已存入哈希表,对于查找则查找成功; ③若探查到T[d-1]时仍未发现空单元也未找到key,对于构造表则此时表满,对于查找表示查找失败。 【示例】设关键字集合为{47,7,29,11,16,95,22,8,3},哈希表表长为11,哈希函数为H(key)=key mod 11。 则哈希表如下: 图7-5 哈希表 哈希地址 关键字 11 22 47 3 16 7 29 95 8 0 1 2 3 4 5 6 7 8 9 10 (2)二次(平方)探查法:将哈希表T[0…n-1]看成是一个循环向量,若初始探查的地址为d(即H(key)=d),则探查序列为:d,d+l2,d-l2,d+22,d-22,…。即探查时从地址d开始,首先探查T[d],然后依次探查T[d+1] 直到T[n-1],此后又循环到T[0]直到T[d-1]为止。 (3)线性补偿探查法: 将线性探测的步长从1改为Q,即若初始探查的地址为d(即H(key)=d),则探查序列为:d,d+Q,d+2Q,d+3Q,…,而且要求Q与n是互质的, 以便能探测到哈希表中的所有单元。 【示例】设关键字集合为{47,7,29,11,16,95,22,8,3},哈希表表长为11,哈希函数为H(key)=key mod 11。 则哈希表如下: 图7-6 哈希表 哈希地址 关键字 11 22 47 3 16 95 7 29 8 0 1 2 3 4 5 6 7 8 9 10 【示例】设关键字集合为{47,7,29,11,16,95,22,8,3},哈希表表长为11,哈希函数为H(key)=key mod 11, Q=3。则构造哈希表的过程如下: 图7-7 哈希表 哈希地址 关键字 11 95 47 16 22 7 8 3 29 0 1 2 3 4 5 6 7 8 9 10 2.拉链法 拉链法解决冲突的做法:将所有关键字为同义词的结点链接在同一个单链表中。若选定的散列表长度为n,则可将散列表定义为一个由n个头指针组成的指针数组T[0…n-1]。凡是散列地址为i的结点,均插入到以T[i]为头指针的单链表中。T中各分量的初值均应为空指针。 【示例】设关键字集合为{47,7,29,11,16,95,22,8,3},哈希表表长为11,哈希函数为H(key)=key mod 11。则拉链法构造哈希表的过程如下: 图7-8 哈希表 哈希地址 关键字 ^ ^ ^ ^ ^ ^ 0 1 2 3 4 5 6 7 8 9 10 11 22 ^ 47 3 ^ 16 ^ 8 ^ 7 29 95 ^ 【课堂实践7-2】 已知关键字序列为(56,23,41,79,38,62,18),用哈希函数H(key)=key%11将其散列到哈希表HT[0…10]中: (1)采用线性探测法处理冲突,构造哈希表。 (2)采用拉链法处理冲突,构造哈希表。 做 一 做 引例分析与实现 1.引例分析 该系统的主要功能是对高校录取分数线等信息进行查询,高校信息主要包括:学校代码、学校名称和最低录取分数线,将各学校信息存放在一个文本文件中,由于高校信息可能需要随时添加,所以查找表可以看做是一个动态查找表,采用二叉排序树的存储结构实现查找较为恰当。 根据问题描述及系统应具备的功能,需要进行如下数据结构的描述和编写以下功能函数: (1)数据结构描述 typedef int KeyType; //关键字类型定义 typedef struct node { //结点类型 KeyType PM; //存放录取分数线 char SNum[6],SName[20]; //存放学校代码、学校名称 struct node *lchild,*rchild; //左右孩子指针 } BSTNode; typedef BSTNode *BSTree; //BSTree是二叉排序树的类型 (2)功能函数 ①二叉排序树插入新结点的(非递归算法)函数:BSTNode *InsertBST (BSTree *Tptr,FILE *fp),用于建立二叉排序树,向二叉排序树插入新结点,只需对本

文档评论(0)

1亿VIP精品文档

相关文档