编写程序,输入数据进行哈希插入和查找
时间: 2024-02-17 08:02:41 浏览: 16
好的,我可以为您提供一个简单的哈希表实现,包括插入和查找操作。以下是示例代码:
```python
class HashTable:
def __init__(self):
self.size = 10
self.keys = [None] * self.size
self.values = [None] * self.size
def hash_function(self, key):
sum = 0
for i in range(len(key)):
sum = sum + ord(key[i])
return sum % self.size
def rehash(self, old_hash):
return (old_hash + 1) % self.size
def insert(self, key, data):
hash_value = self.hash_function(key)
if self.keys[hash_value] is None:
self.keys[hash_value] = key
self.values[hash_value] = data
else:
if self.keys[hash_value] == key:
self.values[hash_value] = data # replace
else:
next_slot = self.rehash(hash_value)
while self.keys[next_slot] is not None and \
self.keys[next_slot] != key:
next_slot = self.rehash(next_slot)
if self.keys[next_slot] is None:
self.keys[next_slot] = key
self.values[next_slot] = data
else:
self.values[next_slot] = data # replace
def get(self, key):
start_slot = self.hash_function(key)
data = None
stop = False
found = False
position = start_slot
while self.keys[position] is not None and \
not found and not stop:
if self.keys[position] == key:
found = True
data = self.values[position]
else:
position = self.rehash(position)
if position == start_slot:
stop = True
return data
```
在上面的代码中,我们使用哈希函数将键映射到哈希表中的索引位置,然后使用线性探测方法解决哈希冲突。`insert`函数用于将键和值插入哈希表中,如果哈希表中已经存在该键,则更新其对应的值;`get`函数用于根据键查找哈希表中的值。
下面是一个使用示例:
```python
hash_table = HashTable()
hash_table.insert("apple", 1)
hash_table.insert("banana", 2)
hash_table.insert("orange", 3)
print(hash_table.get("apple")) # 输出 1
print(hash_table.get("banana")) # 输出 2
print(hash_table.get("orange")) # 输出 3
print(hash_table.get("watermelon")) # 输出 None
```
在上面的示例中,我们创建了一个哈希表,并向其中插入了三个键值对。然后我们使用`get`函数来查找键对应的值。如果键不存在于哈希表中,则返回`None`。