哈希表之三------开放定址法 构造哈希表

开放定址法是一种处理哈希表冲突的方法,允许冲突元素寻找空闲单元存储。线性探测再散列是开放定址法的一种,当发生冲突时,按顺序检查后续单元,直到找到空位。本文通过实例介绍了如何在长度为11的哈希表中,使用线性探测再散列解决冲突并插入关键字为38的记录。
摘要由CSDN通过智能技术生成

开放定制法也是处理构造哈希表中关键字的哈希地址冲突的一种有效方法。

开放定址法就是从发生冲突的那个单元开始,按照一定的次序,从哈希表中查找出一个空闲的存储单元,把发生冲突的待插入元素存入到该空闲单元的一类处理冲突的方法。在开放定址法中,哈希表中的空闲单元(假定下标为i)不仅向哈希地址为i的同义词的元素开放,允许它们使用,也向发生冲突的其他元素开放,因它们 的哈希地址不为i,所以称之为非同义词元素。

总之,在开放定址法中,空闲单元不仅向同义词开放,也向发生冲突的非同义词开放,因此称之为开放定址法。

假设哈希表的地址集为0~n-1,冲突是指关键字得到的哈希地址为j(0<=j<=n-1)的位置上已经有关键字存在,则冲突处理就是为该关键字找到一个“空”的哈希地址。在处理冲突的过程中可能得到一个一个地址序列,Hi  (i=1,2,3,4...k,),Hi介于0到n-1之间,即在处理哈希地址的冲突时,若得到另一个哈希地址H1仍然发生冲突,则再求下一个地址H2,若H2仍然冲突,则再求H3,以此类推,直至Hk不发生冲突为止,则Hk为记录在表中的地址。


开放定址法主要有三种方法,包括线性探测再散列(即线性探测法),二次探测再散列(即平方探测法)和伪随机探测再散列(详见教材)

这里代码实现的是其中的线性探测再散列:

例如在长度为11的哈希表中,已经填入关键字分别为17,60,29的记录(哈希函数为H(key) MOD 11),现有第四个记录,其关键字为38,由哈希函数得到的哈希地址为5,和关键字为

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值