次の記述中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 関数addは、引数で指定された正の整数valueを大域の整数型の配列hashArrayに格納する。格納できた場合はtrueを返し、格納できなかった場合はfalseを返す。ここで、整数valueをhashArrayのどの要素に格納すべきかを、関数calcHash1及びcalcHash2を利用して決める。 手続testは、関数addを呼び出して、hashArrayに正の整数を格納する。手続testの処理が終了した直後のhashArrayの内容は、 である。 〔プログラム〕 大域: 整数型の配列: hashArray ○論理型: add(整数型: value) 整数型: i ← calcHash1(value) if (hashArray[i] = -1) hashArray[i] ← value return true else i ← calcHash2(value) if (hashArray[i] = -1) hashArray[i] ← value return true endif endif return false ○整数型: calcHash1(整数型: value) return (value mod hashArrayの要素数) + 1 ○整数型: calcHash2(整数型: value) return ((value + 3) mod hashArrayの要素数) + 1 ○test() hashArray ← {5個の -1} add(3) add(18) add(11)

衝突時は別ハッシュで再計算。空きが出るまで探す

頻出基本情報技術者試験2023年度 公開問題 科目B4/アルゴリズムとプログラミング / 探索アルゴリズム

選択肢

正解と解説

正解: {-1, 18, -1, 3, 11}

要素数5なので、3は(3 mod 5)+1=4番目に入る。18は(18 mod 5)+1=4番目が埋まっているため第2のハッシュ((18+3) mod 5)+1=2番目に入る。11も(11 mod 5)+1=2番目が埋まっているので((11+3) mod 5)+1=5番目に入り、結果は2番目に18、4番目に3、5番目に11が格納された状態になる。

選択肢ごとの解説

出典:令和5年度 公開問題 基本情報技術者試験 科目B 問4(IPA)

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。