利用哈希函数来实现一个小型信息管理系统,其中信息包含用户名,地址,电话等。
时间: 2024-05-08 21:17:38 浏览: 60
实现步骤:
1. 定义一个哈希函数,将每个用户的信息转化为一个数字。
2. 创建一个哈希表,用于存储用户信息。
3. 实现添加用户信息、删除用户信息、查找用户信息等操作。
4. 在添加用户信息时,先将用户信息通过哈希函数转化为一个数字,然后将该数字作为键值存储到哈希表中。
5. 在查找用户信息时,先将用户名通过哈希函数转化为一个数字,然后在哈希表中查找该数字对应的键值,如果存在则返回该用户的信息。
6. 在删除用户信息时,先将用户名通过哈希函数转化为一个数字,然后在哈希表中查找该数字对应的键值,如果存在则删除该键值对应的用户信息。
示例代码:
```python
class User:
def __init__(self, name, address, phone):
self.name = name
self.address = address
self.phone = phone
def __repr__(self):
return f"{self.name} {self.address} {self.phone}"
class HashTable:
def __init__(self):
self.size = 10
self.table = [[] for _ in range(self.size)]
def _hash(self, name):
return sum([ord(c) for c in name]) % self.size
def add_user(self, user):
key = self._hash(user.name)
self.table[key].append(user)
def find_user(self, name):
key = self._hash(name)
for user in self.table[key]:
if user.name == name:
return user
raise KeyError(f"User {name} not found")
def remove_user(self, name):
key = self._hash(name)
for i, user in enumerate(self.table[key]):
if user.name == name:
del self.table[key][i]
return
raise KeyError(f"User {name} not found")
# 测试代码
table = HashTable()
table.add_user(User("Alice", "Shanghai", "123456"))
table.add_user(User("Bob", "Beijing", "234567"))
table.add_user(User("Charlie", "Guangzhou", "345678"))
print(table.table)
# [[], [], [], [], [Alice Shanghai 123456], [Charlie Guangzhou 345678], [], [], [], [Bob Beijing 234567]]
print(table.find_user("Alice"))
# Alice Shanghai 123456
table.remove_user("Bob")
print(table.table)
# [[], [], [], [], [Alice Shanghai 123456], [Charlie Guangzhou 345678], [], [], [], []]
```
阅读全文