基本情報技術者試験 (FE) 科目 B — 練習問題 第 11 問 / 全 20 問 · 本番相当
連結リストの走査
関連レッスン: 繰り返し (while) の書き方と無限ループの避け方
配列 値 と配列 次 は単方向リストを表している。次[k] は k 番目の要素の次に来る要素の位置で、0 は終端を意味する。次のプログラムを実行したとき、出力される内容はどれか。
整数型の配列: 値 ← {30, 10, 40, 20}
整数型の配列: 次 ← {3, 1, 4, 0}
整数型: 位置 ← 2
while (位置 ≠ 0)
print(値[位置])
位置 ← 次[位置]
endwhile解説
正解: イ 10 30 40 20
位置 の変化を追います。位置 = 2 → 値[2] = 10 を出力し、次[2] = 1 なので位置は 1。位置 = 1 → 値[1] = 30 を出力し、次[1] = 3。位置 = 3 → 値[3] = 40 を出力し、次[3] = 4。位置 = 4 → 値[4] = 20 を出力し、次[4] = 0 なのでループを抜けます。出力は 10、30、40、20 の順です。
配列に格納されている順 (30、10、40、20) と、リストとしてたどる順は別物です。連結リストは「どこに置かれているか」ではなく「次はどこかを示す値」で順序が決まります。配列の並びをそのまま答えてしまうのが最も多い誤りです。
このように配列 2 本 (値と次) でリストを表現する形式は科目 B の頻出パターンです。追うときは 位置 の遷移だけを 2 → 1 → 3 → 4 → 0 と先に書き出し、後から値を当てはめると間違えにくくなります。
配列に入っている順ではなく、次[] が指す順にたどる。
演習量を増やしたい方へ(おすすめ書籍)
擬似言語の記法の読み方から、トレースして答えを出すまでを一冊で通せる科目B特化本。手を動かして追う練習量を確保したいときの定番。
科目Bの出題パターンを網羅的に演習できる対策書。構文を理解した後、解法の型を身につける段階で効く。
科目Bの出題範囲を絞り込んだ薄型の対策書。頻出アルゴリズムと情報セキュリティを短期間で一周したいときに。
本セクションはAmazonアソシエイトのリンクを含みます。
プログラムの読み方でつまずいたら。
たいてっくが、アルゴリズムの追い方から SQL・データベース設計まで、1対1で学習をサポートします。「コードを目で追っても何をしているか分からない」段階からで大丈夫です。まずは無料相談から。
「教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。」
— H 様(DB・SQL コース受講)「体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。」
— M 様(DB・SQL コース受講)「大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。」
— K 様(DB・SQL コース受講)