2

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

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

4

1 回答 1

6

您的解决方案中的问题是您使用“线性探测”进行插入操作,但您没有使用相同的方法来检索它。

首先-我会更改您的下划线存储以保留整个结构而不是值:

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

于 2017-04-05T08:33:16.887 回答