この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は ウ

解説

双方向リスト構造は、データの要素が前後の要素を指し示すポインタを持つデータ構造です。電車の車両をイメージすると理解しやすく、各車両(ノード)が前後の車両との連結器(ポインタ)を持っているようなものです。新しい要素を追加する際は、既存の要素間のポインタ接続を適切に更新する必要があります。 この問題では、社員Gを社員Aと社員Kの間に挿入します。具体的には、社員Aの次ポインタ(a)を400に、社員Kの前ポインタ(f)を400に変更する必要があります。一方、社員Tの前後ポインタ(c,d)や、社員Aの前ポインタ(b)、社員Kの次ポインタ(e)は変更の必要がありません。 このような問題が出題される理由は、データ構造の操作における参照の更新を正確に理解しているかを確認するためです。特に双方向リストでは、要素の追加・削除時に複数のポインタを適切に更新する必要があり、その論理的な思考力が問われます。

なぜ他の選択肢は違うのか

選択肢 ア
「a, b, e, f」は過剰に多くのポインタを変更すると考えた誤りです。社員Aの前ポインタ(b)は元々0で変更の必要がなく、社員Kの次ポインタ(e)も200のままで良いのに、これらまで変更対象としてしまっています。新規要素の追加時は、必要最小限のポインタ更新で済むことを理解する必要があります。
選択肢 イ
「a, e, f」は社員Kの次ポインタ(e)まで変更が必要と考えた誤りです。社員Gは社員Aと社員Kの間に挿入されますが、社員Kの次ポインタ(e)は元の値(200)のままで構いません。不必要なポインタまで更新対象に含めてしまう典型的な誤りです。
選択肢 エ
「b, e」は完全な誤りです。社員Gの挿入に際して、実際に変更が必要なのは社員Aの次ポインタ(a)と社員Kの前ポインタ(f)です。社員Aの前ポインタ(b)と社員Kの次ポインタ(e)は変更の必要がないにもかかわらず、これらを変更対象としてしまっています。

解くときのポイント

双方向リストの要素追加時のポインタ更新は、以下の手順で考えると間違いにくいです: 1. まず、新規追加位置の前後の要素を特定する 2. 新規要素の前後ポインタを設定する 3. 前要素の次ポインタを新規要素に向ける 4. 後要素の前ポインタを新規要素に向ける また、変更が必要なポインタを判断する際は、「この接続が本当に変更される必要があるか?」を一つずつ確認することが重要です。