如何在使用线性探测解决冲突后从哈希表中检索值?
How to retrieve values from hashtable after resolving collision using linear probing?
我正在尝试在 go 中实现一个哈希程序,我使用线性探测进行了插入和解决冲突。当我尝试取回值时,我得到了不同的值,因为我使用线性探测来修复冲突。
您的解决方案中的问题是您使用 "linear probing" 进行插入操作,但您没有使用相同的方法来检索它。
首先 - 我会更改您的下划线存储以保留整个结构而不是值:
var hasharray [15]Item
其次,我会更改检索方法以使用计算的哈希索引检查项目的值,然后一个接一个地迭代项目以在发生冲突时找到实际项目:
func retrieve(key string) {
index := hashmethod(key)
found := false
for !found {
item:= hasharray[index];
if key == item.key {
found = true;
fmt.Println(index, item)
} else if index != size-1 {
index++
} else {
index = 0
}
}
}
我正在尝试在 go 中实现一个哈希程序,我使用线性探测进行了插入和解决冲突。当我尝试取回值时,我得到了不同的值,因为我使用线性探测来修复冲突。
您的解决方案中的问题是您使用 "linear probing" 进行插入操作,但您没有使用相同的方法来检索它。
首先 - 我会更改您的下划线存储以保留整个结构而不是值:
var hasharray [15]Item
其次,我会更改检索方法以使用计算的哈希索引检查项目的值,然后一个接一个地迭代项目以在发生冲突时找到实际项目:
func retrieve(key string) {
index := hashmethod(key)
found := false
for !found {
item:= hasharray[index];
if key == item.key {
found = true;
fmt.Println(index, item)
} else if index != size-1 {
index++
} else {
index = 0
}
}
}