問題文
次のプログラム中の[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 である。
| 要素番号 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| dataList | 10 | 30 | 20 | 40 | 未定義 |
| pointerList | 3 | 4 | 2 | 未定義 | 未定義 |
原典の網掛けセルは「未定義」と文字で表記。
関数orderList は,図1 のdataList 及びpointerList で表現した単方向リストの値を,単方向リストの先頭からたどって順番に格納した配列を返す。関数orderListが返す配列を図2 に示す。
| 要素番号 | 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] が 未定義)
繰返し処理を終了する
endif
p ← [b]
endfor
return linearList出典:出典:IPA 令和8年度 基本情報技術者試験 科目B 公開問題 問4。共通の表記ルールは原典PDFの2〜3ページを参照してください。
原典PDFへのリンクを掲載。テキストは改行を整形し、ルビを本文漢字に統合。科目Bの枠付き空欄を[空欄]または[a][b]で表記。解説未作成。
出典:IPA 令和8年度 基本情報技術者試験 科目B 公開問題 問4
IPAの公開問題について ↗
