ポインタをたどる回数が最も多いものは 【データ構造】

情報処理試験過去問

令和元年度 秋期 応用情報処理技術者試験 午前 問6

問題

先頭ポインタと末尾ポインタをもち, 多くのデータがポインタで繋がった単方向の線形リストの処理のうち, 先頭ポインタ, 末尾ポインタ又は各データのポインタをたどる回数が最も多いものはどれか。ここで, 単方向のリストは先頭ポインタからつながっているものとし, 追加するデータはポインタをたどらなくても参照できるものとする。

ア 先頭にデータを追加する処理

イ 先頭のデータを削除する処理

ウ 末尾にデータを追加する処理

エ 末尾のデータを削除する処理

解説

線形リストは、データとポイントがあるノードをポインタでつないだものになります。
ポインタは、アドレス(場所)が指定されます。単方向のリストなので、ポインタは、次のノードを示すのみなります。
先頭ポインタと末尾ポインタがあるとのことで、最初と最後のデータは、そのポインタを確認すればわかりますが、途中のデータは、ポインタを辿っていかないとわかりませんね。

左上にあるのが先頭ポインタで、右上にあるのが末尾ポインタになります。右下の最後のノードには、次のノードがないので、ポインタには何もない状態になります。

それでは、選択肢を見ていきます。
ア 先頭にデータを追加するときは、そのポインタに、今までの先頭のデータを指定する必要があります。
  そして、先頭ポインタには、新たに追加したデータを指定すれば、OK です。
  
イ 先頭のデータを削除するのには、先頭ポインタで先頭のデータを確認して、そのポインタの値である次のデータを先頭ポインタの値にして、元々の先頭データを削除すればOK です。

ウ 末尾にデータを追加するには、データを追加して、今までの末尾データであったポインタに新しいデータを指定して、末尾ポインタに、新たなデータの場所を指定して OK です。

エ 末尾のデータを削除するには、末尾ポインタで示されているデータを削除して、末尾ポインタに今までの末尾データの1つ前のデータを指定し、そのデータのポインタの値をなくす必要があります。
この末尾データの1つ前のデータがどこにあるのかは、単方向のため、先頭データからポインタを参照していく必要があります。

正解

エ 末尾のデータを削除する処理



あらためて問題と正解

先頭ポインタと末尾ポインタをもち, 多くのデータがポインタで繋がった単方向の線形リストの処理のうち, 先頭ポインタ, 末尾ポインタ又は各データのポインタをたどる回数が最も多いものはどれか。ここで, 単方向のリストは先頭ポインタからつながっているものとし, 追加するデータはポインタをたどらなくても参照できるものとする。

ア 先頭にデータを追加する処理

イ 先頭のデータを削除する処理

ウ 末尾にデータを追加する処理

エ 末尾のデータを削除する処理

■正解

エ 末尾のデータを削除する処理

テキストのコピーはできません。