当前位置: 首页> 教育> 幼教 > 具体的散列表实现示例

具体的散列表实现示例

时间:2025/7/13 22:28:12来源:https://blog.csdn.net/qq_39311377/article/details/141941110 浏览次数:0次

例中,我们将使用链地址法(拉链法)来处理冲突,并使用Python的列表(list)和字典(dict)来模拟散列表的行为。不过,为了更贴近底层实现,我们不会直接使用Python的内置字典,而是自己实现一个简单的散列表。

class HashTable:def __init__(self, size=10):# 初始化散列表,size为散列表的大小self.size = size# 使用列表来存储链表头节点,初始为空self.table = [[] for _ in range(self.size)]def _hash(self, key):# 简单的散列函数,这里使用取模运算return key % self.sizedef insert(self, key, value):# 插入键值对index = self._hash(key)# 遍历链表,查找是否存在相同的keyfor item in self.table[index]:if item[0] == key:# 如果key已存在,则更新valueitem[1] = valuereturn# 如果key不存在,则添加新的键值对到链表的末尾self.table[index].append([key, value])def search(self, key):# 查找key对应的valueindex = self._hash(key)for item in self.table[index]:if item[0] == key:return item[1]# 如果没有找到,则返回Nonereturn Nonedef delete(self, key):# 删除键值对index = self._hash(key)for i, item in enumerate(self.table[index]):if item[0] == key:# 找到对应的key,从链表中删除del self.table[index][i]return# 使用示例
hash_table = HashTable(5)  # 创建一个大小为5的散列表
hash_table.insert(1, "one")
hash_table.insert(2, "two")
hash_table.insert(7, "seven")
hash_table.insert(12, "twelve")print(hash_table.search(1))  # 输出: one
print(hash_table.search(7))  # 输出: sevenhash_table.delete(2)
print(hash_table.search(2))  # 输出: None# 注意:这个实现是简化的,没有处理扩容(rehashing)的情况。
# 在实际应用中,当散列表的装填因子超过某个阈值时,需要进行扩容以维持性能。

在这个示例中,HashTable 类使用了一个列表 self.table 来存储链表头节点,每个链表用于解决相同哈希值(即冲突)的键值对。_hash 方法是一个简单的哈希函数,它使用取模运算将关键字映射到表中的一个索引。insert、search 和 delete 方法分别用于插入、查找和删除键值对。

关键字:具体的散列表实现示例

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: