线性探测法处理冲突构造散列表代码
时间: 2023-11-29 21:03:48 浏览: 86
以下是一个简单的使用线性探测法处理冲突的散列表的 Python 代码示例:
```python
class HashTable:
def __init__(self, size):
self.size = size
self.keys = [None] * size
self.values = [None] * size
def hash_function(self, key):
return key % self.size
def rehash(self, old_hash):
return (old_hash + 1) % self.size
def put(self, key, value):
hash_value = self.hash_function(key)
while self.keys[hash_value] is not None and self.keys[hash_value] != key:
hash_value = self.rehash(hash_value)
self.keys[hash_value] = key
self.values[hash_value] = value
def get(self, key):
start_hash = self.hash_function(key)
hash_value = start_hash
value = None
while self.keys[hash_value] is not None:
if self.keys[hash_value] == key:
value = self.values[hash_value]
break
hash_value = self.rehash(hash_value)
if hash_value == start_hash:
break
return value
```
这个散列表使用取余法计算哈希值,并且使用线性探测法来解决冲突。在 `put` 方法中,如果发生冲突,就不断向后查找下一个空位置,直到找到一个空位置或者查找完整个散列表。在 `get` 方法中,先计算出哈希值,然后依次向后查找,直到找到目标元素或者查找完整个散列表。
阅读全文