応用情報技術者試験 令和元年秋 午前問6 解説付き過去問
問題
先頭ポインタと末尾ポインタをもち、多くのデータがポインタでつながった単方向の線形リストの処理のうち、先頭ポインタ、末尾ポインタ又は各データのポインタをたどる回数が最も多いものはどれか。
ここで、単方向のリストは先頭ポインタからつながっているものとし、追加するデータはポインタをたどらなくても参照できるものとする。
正解
解説
線形リストとは、データとポインタとが入ったノードと呼ばれる要素をポインタでつないだもの。
以下のような、単方向の線形リストで解答のポインタをたどる回数を確認してみる。
[先頭にデータを追加する処理]
先頭にデータXを追加するとすると、先頭ポインタをXに変更し、データXが持つポインタをAとする。 ポインタをたどる回数は0回。

[先頭のデータを削除する処理]
先頭ポインタをBに変更する。 ポインタをたどる回数は0回。

[末尾にデータを追加する処理]
末尾にデータYを追加するとすると、末尾ポインタをたどって、データDにアクセス

データDが持つポインタをYに変更する。そして、末尾ポインタをYに変更する。

ポインタをたどる回数は1回。
[末尾のデータを削除する処理]
先頭ポインタをたどって、A→B→Cのデータにアクセス。

データCが持つポインタを空白に変更し、末尾ポインタをCにする。

ポインタをたどる回数は3回。
この結果から、正解は「末尾のデータを削除する処理」となる。
以下のような、単方向の線形リストで解答のポインタをたどる回数を確認してみる。

[先頭にデータを追加する処理]
先頭にデータXを追加するとすると、先頭ポインタをXに変更し、データXが持つポインタをAとする。 ポインタをたどる回数は0回。

[先頭のデータを削除する処理]
先頭ポインタをBに変更する。 ポインタをたどる回数は0回。

[末尾にデータを追加する処理]
末尾にデータYを追加するとすると、末尾ポインタをたどって、データDにアクセス

データDが持つポインタをYに変更する。そして、末尾ポインタをYに変更する。

ポインタをたどる回数は1回。
[末尾のデータを削除する処理]
先頭ポインタをたどって、A→B→Cのデータにアクセス。

データCが持つポインタを空白に変更し、末尾ポインタをCにする。

ポインタをたどる回数は3回。
この結果から、正解は「末尾のデータを削除する処理」となる。