基本情報技術者試験 - 令和5年公開問題 - 問2
双方向のポインタをもつリスト構造のデータを表に示す。この表において新たな社員Gを社員Aと社員Kの間に追加する。追加後の表のポインタ a~f の中で追加前と比べて値が変わるポインタだけを全て列記したものはどれか。
表
追加後の表
表
| アドレス | 社員名 | 次ポインタ | 前ポインタ |
| 100 | 社員A | 300 | 0 |
| 200 | 社員T | 0 | 300 |
| 300 | 社員K | 200 | 100 |
追加後の表
| アドレス | 社員名 | 次ポインタ | 前ポインタ |
| 100 | 社員A | a | b |
| 200 | 社員T | c | d |
| 300 | 社員K | e | f |
| 400 | 社員G | x | y |
| ア | a,b,e,f |
|---|---|
| イ | a,e,f |
| ウ | a,f |
| エ | b,e |
答え : ウ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
解説 :
双方向リスト構造にデータを挿入した際に,値が変わるポインタを求める問題です。表では社員Aの次に社員K,社員Kの次に社員Tという順でリストがつながっており,この社員Aと社員Kの間に新たに社員Gを挿入します。
挿入前は社員Aの次ポインタが社員K(アドレス300)を指していましたが,挿入後は社員Aの次ポインタは新しく追加された社員G(アドレス400)を指すように変わるため,aの値が変化します。
また,社員Kの前ポインタは,挿入前は社員A(アドレス100)を指していましたが,挿入後は社員G(アドレス400)を指すように変わるため,fの値も変化します。
一方,社員Tに関するポインタ(cとd)は,社員Aと社員Kの間への挿入の影響を受けないため変化しません。また,社員Kの次ポインタ(e)も,社員Kの次に社員Tが続くという関係は変わらないため,そのままです。したがって,値が変わるのはaとfの二つであり,正解は選択肢「ウ」です。
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
解説 :
双方向リスト構造にデータを挿入した際に,値が変わるポインタを求める問題です。表では社員Aの次に社員K,社員Kの次に社員Tという順でリストがつながっており,この社員Aと社員Kの間に新たに社員Gを挿入します。
挿入前は社員Aの次ポインタが社員K(アドレス300)を指していましたが,挿入後は社員Aの次ポインタは新しく追加された社員G(アドレス400)を指すように変わるため,aの値が変化します。
また,社員Kの前ポインタは,挿入前は社員A(アドレス100)を指していましたが,挿入後は社員G(アドレス400)を指すように変わるため,fの値も変化します。
一方,社員Tに関するポインタ(cとd)は,社員Aと社員Kの間への挿入の影響を受けないため変化しません。また,社員Kの次ポインタ(e)も,社員Kの次に社員Tが続くという関係は変わらないため,そのままです。したがって,値が変わるのはaとfの二つであり,正解は選択肢「ウ」です。