将哈希表中键值为key的元素设定值改为value
时间: 2024-02-03 18:14:53 浏览: 23
假设哈希表的实现是使用数组和链表的组合,具体步骤如下:
1. 通过哈希函数计算出key对应的哈希值h;
2. 根据哈希值h找到数组中的对应位置p;
3. 在位置p处的链表中遍历查找,如果找到了键为key的元素,则将该元素的值设为value,并返回修改后的哈希表;
4. 如果在链表中没有找到键为key的元素,则创建一个新的键值对,插入到链表的头部,并返回修改后的哈希表。
下面是一个简单的Python示例代码:
```
class Node:
def __init__(self, key, value):
self.key = key
self.value = value
self.next = None
class HashTable:
def __init__(self, size):
self.size = size
self.table = [None] * size
def hash(self, key):
return hash(key) % self.size
def set(self, key, value):
h = self.hash(key)
node = self.table[h]
while node:
if node.key == key:
node.value = value
return self
node = node.next
new_node = Node(key, value)
new_node.next = self.table[h]
self.table[h] = new_node
return self
```
调用set方法即可将哈希表中键值为key的元素设定值改为value。例如:
```
ht = HashTable(10)
ht.set('apple', 2).set('banana', 3).set('orange', 4)
print(ht.table)
# 将键为'banana'的元素设定值改为5
ht.set('banana', 5)
print(ht.table)
```
输出结果:
```
[None, <__main__.Node object at 0x7f9e9f0e8a30>, <__main__.Node object at 0x7f9e9f0e8a90>, None, None, <__main__.Node object at 0x7f9e9f0e8ac0>, None, None, None, None]
[None, <__main__.Node object at 0x7f9e9f0e8a30>, <__main__.Node object at 0x7f9e9f0e8a90>, None, None, <__main__.Node object at 0x7f9e9f0e8ac0>, None, None, None, None]
```