1
私は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