問題 No.2565
データ構造の一つであるスタックの利用例や特性に関する記述として、不適切なものはどれか。
【正解の解説】
データの追加や取り出しを行う端が一箇所ではなく、両端から同時に自由に行うことができる。
スタックは底がふさがった「筒の中に積むお皿の山」のようなものです。お皿の出し入れは必ず一番上(片側)からしか行えず、底から引き抜くことはできません。両端から自由に操作できるのは「両端キュー(ドゥーク)」という別のデータ構造の特徴であり、本問の不適切な記述として正解となります。
スポンサーリンク
【その他の選択肢の解説】
関数を呼び出した際の戻りアドレスやローカル変数の退避場所としてメモリ上で効率的に活用される。
プログラムの処理中に行き先を覚えておくために、スタックの「後から入れたものが最初に出てくる」という特性が非常に役立ちます。例えば、料理中に別の料理を始めても、終われば元の料理に戻るような動きを、メモリ上で完璧に再現できるため、スタックの仕組みが内部でフル活用されています。
先に入れたデータが最初に取り出される先入れ先出しの順序で要素の管理と処理を行う。
「先入れ先出し(FIFO)」はスーパーのレジ待ちや行列と同じで、並んだ順番に処理されます。これに対し、スタックは「後入れ先出し(LIFO)」という全く逆のルールです。初学者が最も混同しやすいポイントなので、行列(キュー)と積み上げ(スタック)のイメージをしっかり区別しましょう。
データの参照や削除を行うことができるのは、原則として最後に挿入された位置のみである。
スタックは最後に積み上げたデータが一番上になり、そこから順番に取り出す「LIFO(Last In, First Out:後入れ先出し)」の原則に従います。Webブラウザの「戻る」ボタンのように、直前に行った操作を次々に取り消していく仕組みと同じであり、一番上のデータにしかアクセスできないのが最大の特徴です。