問題 No.3331
データ構造の一つであるスタックに関する記述として不適切なものはどれか。
【正解の解説】
最初に入れたデータが最初に取り出される先入れ先出し(FIFO)の特性を持つ。
最初に入れたデータが最初に出てくる性質は「FIFO(First-In First-Out)」と呼ばれ、これはスタックではなく「行列(キュー)」の説明です。例えば遊園地のアトラクションの並び列のように、並んだ順番通りに処理されるのがキューであり、スタックとは動きが全く逆になりますので、この記述は誤りとなります。
スポンサーリンク
【その他の選択肢の解説】
最後に入れたデータが最初に取り出される後入れ先出し(LIFO)の特性を持つ。
これは「Last-In First-Out(LIFO)」と呼ばれるスタックの最大の特徴です。机の上に書類を上へ上へと積み重ねていくと、一番最後(一番上)に置いた書類を一番最初に取り出すことになりますよね。このイメージを持っていれば、スタックの仕組みはバッチリ頭に定着します。
データの追加と削除を行う端が両端に分かれており、どちら側からもアクセスできる。
スタックはデータの追加も削除も「片側の一ヶ所(トップ)」だけでしか行えないという厳しいルールがあります。もし両端から自由に出し入れできるとしたら、それはスタックではなく別の仕組みになってしまいます。出入り口が一つしかない穴のような構造をイメージするのがコツです。
要素を取り出す際には、最も古いデータから順に削除される仕組みを採用している。
最も古いデータから順に処理していくのは、先着順を意味するキューの動きです。スタックでは、最も古いデータは一番底に溜まってしまうため、新しく入ってきたデータたちがすべて取り除かれるまで絶対に触ることができません。この古いものから処理されるという罠に引っかからないよう注意しましょう。