python编写模拟散列表
时间: 2023-05-26 21:03:29 浏览: 61
# 模拟散列表的类
class HashTable:
# 初始化时定义散列表长度
def __init__(self, size=10):
self.size = size
self.table = [None] * self.size
# 散列函数
def hash(self, key):
return key % self.size
# 插入操作
def insert(self, key, value):
index = self.hash(key)
if self.table[index] is None:
self.table[index] = [(key, value)]
else:
for i in range(len(self.table[index])):
if self.table[index][i][0] == key:
self.table[index][i] = (key, value)
return
self.table[index].append((key, value))
# 查找操作
def search(self, key):
index = self.hash(key)
if self.table[index] is not None:
for i in range(len(self.table[index])):
if self.table[index][i][0] == key:
return self.table[index][i][1]
return None
# 删除操作
def delete(self, key):
index = self.hash(key)
if self.table[index] is None:
return
else:
for i in range(len(self.table[index])):
if self.table[index][i][0] == key:
del self.table[index][i]
return
# 显示散列表
def display(self):
for i in range(self.size):
if self.table[i] is not None:
print(i, end=": ")
for j in range(len(self.table[i])):
print(self.table[i][j][1], end=" ")
print()
# 测试
ht = HashTable(5)
ht.insert(1, "apple")
ht.insert(11, "banana")
ht.insert(12, "orange")
ht.insert(6, "grape")
ht.insert(7, "peach")
ht.display()
print(ht.search(11))
ht.delete(6)
ht.display()