C/C++の宿題片付けます 161代目
■ このスレッドは過去ログ倉庫に格納されています
0262233
2012/12/14(金) 00:38:44.93ttp://ideone.com/Tkyw49
(心なしかホットスポットが増えたような…)
あと、>>256の
> ハッシュテーブルに追加するときに衝突するけど、cap's と caps は
> 259行目の strcmp_ignore() によって別の文字列として判断され、
> どちらもハッシュテーブルに追加されます。
の説明は間違いでした。それに加えて、ここの処理がおかしいことにも気付きました。
h() のハッシュ値で見つけた場所の文字列を strcmp_ignore() で判定して
同じでなければ追加していたけど、衝突後に p() のハッシュ値から探し出す先で
同一の文字列がある可能性を考慮していませんでした。同一の文字列があっても
同一判定をしていないので追加されてしまっていました。
具体的には、
aaa aa'a aa'a
というファイルを読ませると、ハッシュに 3個とも追加されてしまいます。
衝突後に追加先を探すしょりにも同一文字列判定を加える修正を加えました。
■ このスレッドは過去ログ倉庫に格納されています