次のプログラム中の 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出典令和8年度 基本情報技術者試験 科目B 問4
a | b | |
|---|---|---|
ア | dataList p | i |
イ | dataList p | pointerList p |
ウ | pointerList p | i |
エ | pointerList p | pointerList p |