基本情報技術者試験過去問 令和8年度(2026年)科目B問4
次のプログラム中のaとbに入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。
単方向リストを,配列dataListと配列pointerListの二つの配列で表現する。
dataListにリストの要素の値を格納し,pointerListにリストの次の要素に対応するdataListの要素番号を格納する。単方向リストの先頭は,dataList[1]及びpointerList[1]の組みである。単方向リストの末尾に対応するpointerListの要素は未定義である。dataListのうち単方向リストの要素の値を格納していない要素と,対応するpointerListの要素は未定義である。
プログラムが扱うdataList及びpointerListの内容を図1に示す。先頭の次の要素の要素番号は,pointerList[1]に格納された3であり,値はdataList[3]に格納された20である。その次の要素の要素番号はpointerList[3]に格納された2であり,値はdataList[2]に格納された30である。

関数orderListは,図1のdataList及びpointerListで表現した単方向リストの値を,単方向リストの先頭からたどって順番に格納した配列を返す。関数orderListが返す配列を図2に示す。

〔プログラム〕
大域: 整数型の配列: 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が未定義)
繰返し処理を終了する
endif
p ← b
endfor
return linearList

選択肢
- ア
- イ
- ウ
- エ
正解と解き方・学習ポイント(AI解説)
- ア:不正解
- イ:不正解
- ウ:不正解
- エ:正解