ソフトウェア開発技術者試験 2001年度 = 平成13年度 午前 問10

 図のような単方向リストがある。“トウキョウ”がリストの先頭であり、そのポインタには次に続くデータのアドレスが入っている。また、“ミラノ”はリストの最後であり、そのポインタには0が入っている。
 “ロンドン”を“パリ”に置き換えることができる処理はどれか。

先頭データへのポインタ  アドレス  データ部分  ポインタ    ┌───┐         ┌───────┬───┐    │120│     100 │ ウィーン  │160│    └───┘         ├───────┼───┤              120 │ トウキョウ │180│                  ├───────┼───┤              140 │ パリ    │999│                  ├───────┼───┤              160 │ ミラノ   │  0│                  ├───────┼───┤              180 │ ロンドン  │100│                  └───────┴───┘

ア パリのポインタを100とし、トウキョウのポインタを140とする。
イ パリのポインタを100とし、ロンドンのポインタを140とする。
ウ パリのポインタを180とし、トウキョウのポインタを140とする。
エ パリのポインタを180とし、ロンドンのポインタを140とする。

解答



解説

 単方向リストは、各ノードが、後続ノードへのポインタをもつデータ構造であり、先頭ノードからポインタをたぐることによって、登録されているすべてのデータを取り出すことができるようになっています。
 本問で与えられたデータを、視覚的に分かりやすくすると、以下のようになります。なお、図中の→は、後続ノードへのポインタです。

┌─┐ ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ │ │→│ トウキョウ │→│ ロンドン  │→│ ウィーン  │→│ ミラノ   │ └─┘ └───────┘ └───────┘ └───────┘ └───────┘   120        180      100       160     ┌───────┐     │  パリ   │  ※リスト内には存在せず独立しています。     └───────┘    999

 このリストの“ロンドン”を“パリ”への置換は、次のように行うことになります。

┌─┐ ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ │ │→│ トウキョウ │→│  パリ   │→│ ウィーン  │→│ ミラノ   │ └─┘ └───────┘ └───────┘ └───────┘ └───────┘   120       140       100       160     ┌───────┐     │ ロンドン  │  ※リスト内には存在せず独立しています。     └───────┘    100

したがって、具体的な手続きは、以下のようになります。
 “トウキョウ”のポインタは“パリ”を指さなければなりませんから、140にします。
 “パリ”のポインタは“ウィーン”を指さなければなりませんから、100にします。
※ どこからも指されなくなる“ロンドン”のポインタを変更する必要はありません。


BohYoh.comトップページへ