第2種情報処理技術者試験 |
1996年度 = 平成8年度・秋期 |
午前 |
問12 |
図のような単方向リストがある。“ナリタ”がリストの先頭であり、そのポインタには次に続くデータのアドレスが入っている。また、“ミラノ”はリストの最後であり、そのポインタには0が入っている。
“ロンドン”を“パリ”に置き換える場合の適切な処理はどれか。
先頭データへ
のポインタ アドレス データ部分 ポインタ
┌───┐ ┌──────┬───┐
│120│ 100 │ ウィーン │160│
└───┘ ├──────┼───┤
120 │ ナリタ │180│
├──────┼───┤
140 │ パリ │999│
├──────┼───┤
160 │ ミラノ │ 0│
├──────┼───┤
180 │ ロンドン │100│
└──────┴───┘
ア
| パリのポインタを100とし、ナリタのポインタを140とする。
|
イ
| パリのポインタを100とし、ロンドンのポインタを0とする。
|
ウ
| パリのポインタを100とし、ロンドンのポインタを140とする。
|
エ
| パリのポインタを180とし、ナリタのポインタを140とする。
|
オ
| パリのポインタを180とし、ロンドンのポインタを140とする。
|
ア
単方向リストは、各ノードが、後続ノードへのポインタをもつデータ構造であり、先頭ノードからポインタをたぐることによって、登録されているすべてのデータを取り出すことができるようになっています。
本問で与えられたデータを、視覚的に分かりやすくすると、以下のようになります。なお、図中の→は、後続ノードへのポインタです。
┌─┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐
│ │→│ ナリタ │→│ ロンドン │→│ ウィーン │→│ ミラノ │
└─┘ └──────┘ └──────┘ └──────┘ └──────┘
120 180 100 160
┌──────┐
│ パリ │ ※リスト内には存在せず独立しています。
└──────┘
999
このリストの“ロンドン”から“パリ”への置換は、次のように行うことになります。
┌─┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐
│ │→│ ナリタ │→│ パリ │→│ ウィーン │→│ ミラノ │
└─┘ └──────┘ └──────┘ └──────┘ └──────┘
120 140 100 160
┌──────┐
│ ロンドン │ ※リスト内には存在せず独立しています。
└──────┘
100
したがって、具体的な手続きは、以下のようになります。
→ “ナリタ”のポインタは“パリ”を指さなければなりませんから、140にします。
→ “パリ”のポインタは“ウィーン”を指さなければなりませんから、100にします。
※ どこからも指されなくなる“ロンドン”のポインタを変更する必要はありません。