第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にします。


BohYoh.comトップページへ