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