
基本情報技術者試験 令和8年度 公開問題 科目B、全6問のうちの問4。
出典:令和8年度 基本情報技術者試験 公開問題 科目B 問4(図 1 と図 2 とプログラムは原本の画像を文字に書き起こし、字下げは 1 段を空白 2 つで表した。図 1 の網掛け (未定義) は「未定義」と書いた。空欄は[ a ][ b ]で、解答群の表は 1 行の文に組み直した)
次の
単方
プログラムが
| 要素番号 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| dataList | 10 | 30 | 20 | 40 | 未定義 |
| pointerList | 3 | 4 | 2 | 未定義 | 未定義 |
表は横に送ると続きが見えます。
関数 orderList は,
| 要素番号 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| 値 | 10 | 20 | 30 | 40 |
大域: 整数型の配列: dataList ← {10, 30, 20, 40, 未定義の値}大域: 整数型の配列: pointerList ← {3, 4, 2, 未定義の値, 未定義の値}○整数型の配列: orderList()整数型: i, p ← 1整数型の配列: linearList ← {} // 要素数0の配列for (i を 1 から dataListの要素数 まで 1 ずつ増やす)linearListの末尾 に dataList[p]の値 を追加するif ([ a ] が 未定義)繰返し処理を終了するendifp ← [ b ]endforreturn linearList
- アa dataList[p],b i
- イa dataList[p],
b pointerList[p] - ウa pointerList[p],b i
- エa pointerList[p],
b pointerList[p]
答えと解説を開く
正解はエです。
p は
ほかの選択肢が違う理由
- アp ← i では、
p が 繰返しの 回数を 追うだけで、 リストの つながりを たどりません。 追うと、 1 回目の あとも p は 1 のままで、 {10, 10, 30, 20, 40} に なります。 - イ末尾の
判定に dataList[p] を 見ています。 末尾の 要素 dataList[4] は 40 で 未定義ではないので、 そこで 止まりません。 p ← pointerList[4] で p が 未定義に なり、 次の dataList[p] が 読めなくなります。 - ウ終わりの
判定は 合っていますが、 p ← i では 回数を 追うだけで リストの つながりを たどりません。 追うと {10, 10, 30, 20, 40} に なります。
仕組み
単方
たどる