编程实现哈希表的造表和查找,用除留余数法构造哈希函数,用线性探测再散列或者二次探测再散列解决冲突
时间: 2024-06-14 18:05:32 浏览: 96
以下是使用除留余数法构造哈希函数,并使用线性探测再散列解决冲突的编程实现:
```python
def hash_function(key, size):
return key % size
def linear_probing(hash_table, key, value):
index = hash_function(key, len(hash_table))
while hash_table[index] is not None:
index = (index + 1) % len(hash_table)
hash_table[index] = (key, value)
def hash_table_construction(keys, values):
size = len(keys) * 2
hash_table = [None] * size
for i in range(len(keys)):
linear_probing(hash_table, keys[i], values[i])
return hash_table
def hash_table_lookup(hash_table, key):
index = hash_function(key, len(hash_table))
while hash_table[index] is not None:
if hash_table[index][0] == key:
return hash_table[index][1]
index = (index + 1) % len(hash_table)
return None
keys = [22, 41, 53, 46, 30, 13, 1, 67]
values = [22, 41, 53, 46, 30, 13, 1, 67]
hash_table = hash_table_construction(keys, values)
# 查找关键字为30的值
result = hash_table_lookup(hash_table, 30)
print(result) # 输出:30
```
在上述代码中,`hash_function`函数使用除留余数法将关键字映射到哈希表的索引位置。`linear_probing`函数使用线性探测再散列的方法解决冲突,即如果哈希表中该位置已经被占用,则继续向后查找直到找到一个空位置。`hash_table_construction`函数根据给定的关键字和值构造哈希表。`hash_table_lookup`函数用于在哈希表中查找给定关键字的值。
阅读全文