- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
例 已知一组关键字(19,14,23,1,68,20,84,27,55,11,10,79) 哈希函数为:H(key)=key MOD 13, 用链地址法处理冲突 0 1 2 3 4 5 6 7 8 9 10 11 12 14 ^ 1 27 79 68 55 19 84 20 23 10 11 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 再哈希法 方法:构造若干个哈希函数,当发生冲突时,计算下一个哈希地址, 直到冲突不再发生。 即:Hi=Rhi(key) i=1,2,……k 其中:Rhi——不同的哈希函数 特点:计算时间增加 建立公共溢出区 设哈希函数的值域为[0,m-1],则设向量HashTable[0..m-1]为基本表,每个分量存放一个记录,另设立向量OverTable[0..v]为溢出表。所有关键字和基本表中关键字为同义词的记录,不管他们由哈希函数得到的哈希地址是什么,一旦发生冲突,都填入溢出表。 哈希查找过程 给定k值 计算H(k) 此地址为空 关键字==k 查找失败 查找成功 按处理冲突 方法计算Hi Y N Y N 哈希表的查找 对于给定值 K, 计算哈希地址 i = H(K) 若 r[i] = NULL 则查找不成功 若 r[i].key = K 则查找成功 否则 “求下一地址 Hi” , 直至r[Hi] = NULL (查找不成功) 或r[Hi].key = K (查找成功) 为止。 int hashsize[] = { 997, ... }; typedef struct { ElemType *elem; int count; // 当前数据元素个数 int sizeindex; // hashsize[sizeindex]为当前容量 } HashTable; #define SUCCESS 1 #define UNSUCCESS 0 #define DUPLICATE -1 开放定址哈希表的存储结构 Status SearchHash (HashTable H, KeyType K, int p, int c) { // 在开放定址哈希表H中查找关键码为K的记录 p = Hash(K); // 求得哈希地址 while ( H.elem[p].key != NULLKEY !EQ(K, H.elem[p].key)) collision(p, ++c); // 求得下一探查地址 p if (EQ(K, H.elem[p].key)) return SUCCESS; // 查找成功,返回待查数据元素位置 p else return UNSUCCESS; // 查找不成功 } // SearchHash 查找算法 Status InsertHash (HashTable H, Elemtype e){ if ( HashSearch ( H, e.key, p, c ) == SUCCESS ) return DUPLICATE; // 表中已有与 e 有相同关键字的元素 elseif ( c hashsize[H.sizeindex]/2 ) { // 冲突次数 c 未达到上限,(阀值 c 可调) H.elem[p] = e; ++H.count; return OK; // 查找不成功时,返回 p为插入位置 } else RecreateHashTable(H); // 重建哈希表 } // InsertHash 哈希表的插入 例 已知一组关键字(19,14,23,1,68,20,84,27,55,11,10,79) 哈希函数为H(key)=key MOD 13, 哈希表长为m=16, 用线性探测再散列处理冲突得哈希表 给定值K=38的查找过程为: H(38)=12 不空且不等于38,冲突 H1=(12+1)MOD16=13空记录 表中不存在关键字等于38 的记录,查找不成功。 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 14 1 68 27 5
您可能关注的文档
最近下载
- 0KB.412.367.2 ZF6-1100型气体绝缘金属封闭开关设备用两断口断路器安装使用说明书.pdf VIP
- 法治知识竞赛试题附答案.doc VIP
- 虎符铜砭--刮痧课件.ppt VIP
- 斯柯达技术培训:Gateway J533 EN.ppt VIP
- 2025年江苏开放大学大学英语(B)(1)形成性考核作业二.pdf VIP
- 照明设计软件:Dialux二次开发_DialuxAPI接口详解.docx VIP
- 2024届高考作文材料分类训练-------对立关系型.docx VIP
- TW-ZX系列起重专用变频器用户手册.PDF
- 聚焦离子束加工技术.pdf VIP
- 新22J10 无障碍设计 .docx VIP
文档评论(0)