散列表的开放定址法以及再散列法(C语言)
Posted bfhonor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了散列表的开放定址法以及再散列法(C语言)相关的知识,希望对你有一定的参考价值。
(一)处理冲突的方法——开放定址法
- 所谓开放定址法,是指可存放新表项的空闲地址既向它的同义词表项开放,又向它的非同义词表项开放。其数学递推公式为:
1. 线性探测法
(1)插入操作
(2)查找操作
(3)删除操作
❗❗❗❗❗❗
- 注意:采用“开放定址法”时,删除结点不能简单地将被删结点的空间置为空,否则将截断在它之后填入散列表的同义词结点的查找路径,可以做一个“删除标记”,进行逻辑删除
❗❗❗❗❗❗
- 线性探测法很容易造成同义词、非同义词的“聚集(堆积)”现象,严重影响查找效率
- 产生原因——冲突后再探测一定是放在某个连续的位置
2. 平方探测法
(1)插入操作
- 注意负数的模运算,(-3)%27 = 24,而不是3
《数论》中模运算的规则:a MOD m == (a+km) MOD m , 其中,k为任意整数
(2)查找操作
- 平方探测法:比起线性探测法更不易产生“聚集(堆积)”问题
3. 伪随机序列法
(二)处理冲突的方法——再散列法
以上是关于散列表的开放定址法以及再散列法(C语言)的主要内容,如果未能解决你的问题,请参考以下文章
下面不属于针对散列表构造中的冲突处理的方式是( )(分段叠加法)