我正在尝试在 go 中实现一个哈希程序,我使用线性探测进行了插入和解决冲突。当我试图取回值时,我得到不同的值,因为我使用线性探测来修复冲突。
这是我的程序: https: //play.golang.org/p/7Pmqu6A313
我正在尝试在 go 中实现一个哈希程序,我使用线性探测进行了插入和解决冲突。当我试图取回值时,我得到不同的值,因为我使用线性探测来修复冲突。
这是我的程序: https: //play.golang.org/p/7Pmqu6A313
您的解决方案中的问题是您使用“线性探测”进行插入操作,但您没有使用相同的方法来检索它。
首先-我会更改您的下划线存储以保留整个结构而不是值:
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
}
}
}
见这里: https: //play.golang.org/p/8JfTpbJcWx