格納アドレスが1~6の範囲の直接編成ファイルにおいて,次の条件でデータを格納した場合,アドレス1に格納されているデータのキー値はどれか。
〔条件〕
(1) キー値が3,4,8,13,14,18の順でデータを格納する。
(2) データのキー値を5で割った余りに1を加えた値を格納アドレスにする。
(3) 格納アドレスに既にデータがある場合には,次のアドレスに格納する。
これを格納できるまで繰り返す。
最終アドレスの次は先頭とする。
(4) 初期状態では,ファイルは何も格納されていない。
正答2
解説
正解は2です。
格納アドレスは「キー値を5で割った余り+1」で求め、そこが使用中なら次のアドレスに進みます。
アドレス6の次はアドレス1に戻ります。
【計算】
キー値3は、3÷5の余り3に1を足してアドレス4に格納します。
キー値4は、余り4に1を足してアドレス5に格納します。
キー値8は、余り3なのでアドレス4ですが、4と5が使用中なのでアドレス6に格納します。
キー値13は、余り3なのでアドレス4ですが、4、5、6が使用中なので先頭に戻りアドレス1に格納します。
キー値14は、余り4なのでアドレス5ですが、5、6、1が使用中なのでアドレス2に格納します。
キー値18は、余り3なのでアドレス4ですが、4、5、6、1、2が使用中なのでアドレス3に格納します。
【選択肢別解説】
1:× キー値8はアドレス6に格納されます。
2:○ キー値13がアドレス1に格納されます。
3:× キー値14はアドレス2に格納されます。
4:× キー値18はアドレス3に格納されます。
【ポイント】
同じアドレスに複数のキーが集まることを衝突(シノニム)といいます。
次の空きを順に探すこの方法はオープンアドレス法の一種で、最終アドレスの次を先頭とする条件を見落とさないことが大切です。