令和元年度 秋期 応用情報技術者試験 午前 問6
テクノロジ/アルゴリズム先頭ポインタと末尾ポインタをもち,多くのデータがポインタでつながった単方向の線形リストの処理のうち,先頭ポインタ,末尾ポインタ又は各データのポインタをたどる回数が最も多いものはどれか。ここで,単方向のリストは先頭ポインタからつながっているものとし,追加するデータはポインタをたどらなくても参照できるものとする。
出典:令和元年度 秋期 応用情報技術者試験 午前 問6
- ア先頭にデータを追加する処理
- イ先頭のデータを削除する処理
- ウ末尾にデータを追加する処理
- エ末尾のデータを削除する処理
正解:エ
解説
単方向リストの各要素は次の要素へのポインタしかもちません。末尾のデータを削除するには,末尾の一つ前の要素を新しい末尾にする必要がありますが,その要素へは先頭から順にポインタをたどるしかなく,全要素分をたどることになります。他の三つの処理はポインタを数回たどるだけで済みます。
選択肢ごとの解説
- ア誤り。先頭への追加は,追加するデータのポインタを旧先頭に向け,先頭ポインタを更新するだけで済みます。
- イ誤り。先頭の削除は,先頭ポインタで先頭要素を参照し,その次の要素のアドレスを先頭ポインタに設定するだけで済みます。
- ウ誤り。末尾への追加は,末尾ポインタで末尾要素に直接到達でき,そのポインタを新しい要素に向けるだけで済みます。
- エ正しい。末尾を削除すると末尾の一つ前の要素を新しい末尾にする必要がありますが,単方向リストでは前の要素をたどれないため,先頭から全要素分のポインタをたどることになります。