实现链地址法的哈希表,表的构造参见教材图
时间: 2023-08-15 14:11:44 浏览: 45
好的,下面是一个简单的实现:
```python
class HashTable:
def __init__(self, size):
self.size = size
self.table = [[] for _ in range(size)]
def _hash(self, key):
return key % self.size
def insert(self, key, value):
hash_key = self._hash(key)
for i, (k, v) in enumerate(self.table[hash_key]):
if k == key:
self.table[hash_key][i] = (key, value)
return
self.table[hash_key].append((key, value))
def search(self, key):
hash_key = self._hash(key)
for k, v in self.table[hash_key]:
if k == key:
return v
raise KeyError('Key not found')
def delete(self, key):
hash_key = self._hash(key)
for i, (k, v) in enumerate(self.table[hash_key]):
if k == key:
del self.table[hash_key][i]
return
raise KeyError('Key not found')
```
这个哈希表使用的是链地址法,即每个哈希值对应一个链表,如果出现哈希冲突,则在对应的链表中插入新的键值对。在查找和删除时,需要先计算哈希值,然后在对应的链表中查找或删除。