如何在使用线性探测解决冲突后从哈希表中检索值?

How to retrieve values from hashtable after resolving collision using linear probing?

我正在尝试在 go 中实现一个哈希程序,我使用线性探测进行了插入和解决冲突。当我尝试取回值时,我得到了不同的值,因为我使用线性探测来修复冲突。

这是我的程序:https://play.golang.org/p/7Pmqu6A313

您的解决方案中的问题是您使用 "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
        }
    }   
}

看这里:https://play.golang.org/p/8JfTpbJcWx