平成24年度 春期 午前 問7
データ構造
単方向リストに関する問題
多数のデータが単方向リスト構造で格納されている。このリスト構造には,先頭ポインタとは別に,末尾のデータを指し示す末尾ポインタがある。次の操作のうち,ポインタを参照する回数が最も多いものはどれか。
- アリストの先頭にデータを挿入する。
- イリストの先頭のデータを削除する。
- ウリストの末尾にデータを挿入する。
- エリストの末尾のデータを削除する。
答えと解説を見る
✓ これが正解エリストの末尾のデータを削除する。
解説
後ろから前へたどれないので末尾の削除が重くなります。
単方向リストでは、それぞれのデータが次のデータの居場所だけを持っています。手前へ戻るための手がかりは持っていません。いちばん後ろのデータを取り除くには、末尾ポインタを一つ手前のデータへ付け替える必要がありますが、その一つ手前がどこかは後ろ側からは分かりません。そこで先頭から順にたどり、次が末尾になっているデータを探しに行くことになります。つながっているデータが多いほど、そのぶん見て回る回数が増えていきます。判定の軸は、目的の相手に目印から直接届くのか、それとも探しに行かなければならないのかです。直接届く操作であれば、つなぎ替えは決まった手数で終わります。
ほかの選択肢はなぜ違うのか
- アリストの先頭にデータを挿入する。:先頭ポインタの行き先を新しいデータに向け、その新しいデータには元の先頭を指させれば終わります。つながっているデータが何個あっても、見て回る回数は変わりません。
- イリストの先頭のデータを削除する。:先頭ポインタを、いまの先頭が指している次のデータへ移すだけで完了します。こちらもつながっている個数に左右されず、決まった手数で片づきます。
- ウリストの末尾にデータを挿入する。:末尾ポインタが最後のデータをじかに指しているので、探しに行かずにたどり着けます。そのデータの次を新しいデータへ向け、末尾ポインタを移せば終わります。
出典:平成24年度 春期 基本情報技術者試験 午前 問7
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)