第2種情報処理技術者試験 |
1998年度 = 平成10年度・秋期 |
午前 |
問13 |
図は単方向リストを表している。“東京”がリストの先頭であり、そのポインタには次のデータのアドレスが入っている。また、“名古屋”はリストの最後であり、そのポインタには0が入っている。
アドレス150に置かれた“静岡”を、“熱海”と“浜松”の間に挿入する処理として正しいものはどれか。
先頭データへのポインタ アドレス データ ポインタ
┌────┐ ┌─────┬────┐
│ 10 │ 10 │ 東京 │ 50 │
└────┘ ├─────┼────┤
30 │ 名古屋 │ 0 │
├─────┼────┤
50 │ 新横浜 │ 90 │
├─────┼────┤
70 │ 浜松 │ 30 │
├─────┼────┤
90 │ 熱海 │ 70 │
├─────┼────┤
150 │ 静岡 │ │
└─────┴────┘
ア
| 静岡のポインタを50とし、浜松のポインタを150とする。
|
イ
| 静岡のポインタを70とし、熱海のポインタを150とする。
|
ウ
| 静岡のポインタを90とし、浜松のポインタを150とする。
|
エ
| 静岡のポインタを150とし、熱海のポインタを90とする。
|
イ
単方向リストは、各ノードが、後続ノードへのポインタをもつデータ構造であり、先頭ノードからポインタをたぐることによって、登録されているすべてのデータを取り出すことができるようになっています。
本問で与えられたデータを、視覚的に分かりやすくすると、以下のようになります。なお、図中の→は、後続ノードへのポインタです。
┌─┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐
│ │→│東 京│→│新横浜│→│熱 海│→│浜 松│→│名古屋│
└─┘ └───┘ └───┘ └───┘ └───┘ └───┘
10 50 90 70 30
このリストの“熱海”と“浜松”の間に“静岡”を挿入するには、次のように行わなければなりません。
┌─┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐
│ │→│東 京│→│新横浜│→│熱 海│→│静 岡│→│浜 松│→│名古屋│
└─┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘
10 50 90 150 70 30
したがって、具体的な手続きは、以下のようになります。
→ “静岡”のポインタは“浜松”を指さなければなりませんから、70にします。
→ “熱海”のポインタは“静岡”を指さなければなりませんから、150にします。