第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にします。
※ どこからも指されなくなる“ロンドン”のポインタを変更する必要はありません。


BohYoh.comトップページへ