令和元年度 秋期 応用情報処理技術者試験 午前 問6
問題
先頭ポインタと末尾ポインタをもち, 多くのデータがポインタで繋がった単方向の線形リストの処理のうち, 先頭ポインタ, 末尾ポインタ又は各データのポインタをたどる回数が最も多いものはどれか。ここで, 単方向のリストは先頭ポインタからつながっているものとし, 追加するデータはポインタをたどらなくても参照できるものとする。
ア 先頭にデータを追加する処理
イ 先頭のデータを削除する処理
ウ 末尾にデータを追加する処理
エ 末尾のデータを削除する処理
解説
線形リストは、データとポイントがあるノードをポインタでつないだものになります。
ポインタは、アドレス(場所)が指定されます。単方向のリストなので、ポインタは、次のノードを示すのみなります。
先頭ポインタと末尾ポインタがあるとのことで、最初と最後のデータは、そのポインタを確認すればわかりますが、途中のデータは、ポインタを辿っていかないとわかりませんね。
左上にあるのが先頭ポインタで、右上にあるのが末尾ポインタになります。右下の最後のノードには、次のノードがないので、ポインタには何もない状態になります。
それでは、選択肢を見ていきます。
ア 先頭にデータを追加するときは、そのポインタに、今までの先頭のデータを指定する必要があります。
そして、先頭ポインタには、新たに追加したデータを指定すれば、OK です。
イ 先頭のデータを削除するのには、先頭ポインタで先頭のデータを確認して、そのポインタの値である次のデータを先頭ポインタの値にして、元々の先頭データを削除すればOK です。
ウ 末尾にデータを追加するには、データを追加して、今までの末尾データであったポインタに新しいデータを指定して、末尾ポインタに、新たなデータの場所を指定して OK です。
エ 末尾のデータを削除するには、末尾ポインタで示されているデータを削除して、末尾ポインタに今までの末尾データの1つ前のデータを指定し、そのデータのポインタの値をなくす必要があります。
この末尾データの1つ前のデータがどこにあるのかは、単方向のため、先頭データからポインタを参照していく必要があります。
正解
エ 末尾のデータを削除する処理
あらためて問題と正解
先頭ポインタと末尾ポインタをもち, 多くのデータがポインタで繋がった単方向の線形リストの処理のうち, 先頭ポインタ, 末尾ポインタ又は各データのポインタをたどる回数が最も多いものはどれか。ここで, 単方向のリストは先頭ポインタからつながっているものとし, 追加するデータはポインタをたどらなくても参照できるものとする。
ア 先頭にデータを追加する処理
イ 先頭のデータを削除する処理
ウ 末尾にデータを追加する処理
エ 末尾のデータを削除する処理
■正解
エ 末尾のデータを削除する処理