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


BohYoh.comトップページへ