A,Bというディレクトリ名をもつ複数個のディレクトリが図の構造で管理されている。
カレントディレクトリを ¥A¥B → .. → ..¥B → .¥A の順に移動させた場合,最終的なカレントディレクトリはどこか。
ここで,ディレクトリの指定方法は次のとおりとする。
〔ディレクトリの指定方法〕
(1) ディレクトリは,"ディレクトリ名¥…¥ディレクトリ名"のように,経路上のディレクトリを順に"¥"で区切って並べた後に"¥"とディレクトリ名を指定する。
(2) カレントディレクトリは"."で表す。
(3) 1階層上のディレクトリは".."で表す。
(4) 始まりが"¥"のときは,左端にルートディレクトリが省略されているものとする。
(5) 始まりが"¥",".",".."のいずれでもないときは,左端にカレントディレクトリ配下であることを表す".¥"が省略されているものとする。
正答4
解説
正解は4です。
木構造のディレクトリで、相対パスを使って移動したあとのカレントディレクトリを求める問題です。
図では、ルートの下にAとBがあります。
ルート直下のAの下にはAとBがあり、さらにそのAの下にA、Bの下にAとBがあります。
ルート直下のBの下には、AとBがあります。
【計算】
「¥A¥B」は先頭が「¥」なので、ルートからA、Bとたどり、カレントは¥A¥Bです。
「..」は1階層上なので、カレントは¥Aです。
「..¥B」は、¥Aの1階層上のルートからBへ進むので、カレントは¥Bです。
「.¥A」は、カレント¥Bの下のAへ進むので、カレントは¥B¥Aです。
図のとおり、ルート直下のBの下にはAが存在します。
【選択肢別解説】
1:× ¥Aは、2回目の移動「..」の直後のカレントです。
最終的なカレントではありません。
2:× ¥A¥Aには、手順どおりにたどっても到達しません。
3回目の「..¥B」でルート直下のBに移るので、最後はBの下に進みます。
3:× ¥A¥B¥Aは、2回目の「..」で1階層上に戻らず、¥A¥Bに留まったと誤解した場合の位置です。
「..」で¥Aに戻るので到達しません。
4:○ 上のとおり、最終的なカレントディレクトリは¥B¥Aです。
【ポイント】
「.」はカレント、「..」は1階層上、先頭の「¥」はルートを表します。
移動のたびにカレントを書き出すと、取り違えを防げます。