2023年4月から基本情報技術者の試験制度が変更されました。
試験制度は変更されたものの科目B(旧:午後問題)の重要さは変わりません。
出題方式は「多肢選択式」で以前と同じですが、データ構造及びアルゴリズムが8割、情報セキュリティが2割の割合で出題される点が大きく変わっています。
合格基準点は600点以上/1000点満点中、つまり6割以上取れれば合格になります。
サンプル問題では前半16問が「データ構造及びアルゴリズム」の問題。残り4問が「情報セキュリティ」の問題。となっています。
サンプル問題は公式にIPAから出されている貴重な情報です!
早速、問題を見ていきましょう!
問10 (データ構造及びアルゴリズム)
設問
解答
答え:「カ」
解説
単方向リストに関する問題です。
条件式を見てみると大きく2パターンに場合分けされています。
①posが1と等しいとき
1番目の要素が削除される処理です。
具体的な処理としては、listHead に listHead.next を代入しています。
つまり、2番目の要素を先頭要素に代入する操作です。
これによって、1番目の要素はリストから削除されます。
②「posが1と等しいとき」以外のとき
②-1:posが2のとき
繰り返し処理を行わずに prev の初期値である先頭要素を
そのまま使う。
②-2:posが3以上のとき
3番目の要素を削除する場合、prev に2番目の要素を格納
する必要があります。そのため、1回(pos - 2 回)分だけポイ
ンタを移動して、prev に削除対象の要素のひとつ前の要素
を設定する必要が出てきます。
空欄を含む処理は、prev.nextに”prev.nextの次を指している変数”を代入する必要があります。したがって、適切な選択肢は「prev.next.next」となります。
よって、正解の選択肢は「カ」になります。
最後に
いかがだったでしょうか。
トレースしても解けるかと思いますが、どういったプログラムかを理解できれば時間を節約して解くことが可能です。
リストは単方向以外にも、双方向のものなどもあるため、しっかりと復習しておくと負いでしょう。基本通り、問題文に書いてあるとおりにプログラムをなぞっていくことで解ける問題です!
徐々に難しさも見えてきますが、冷静に解答していきましょう!