簡単まとめ:「スタック」と「キュー」について分かりやすく解説【基本情報技術者資格を取ろう】

スタックとキュー

スタックとキューは、データの入れ物(データ構造)のことです。

データの入れ物(データ構造)には、複数データを格納しておくことと、必要な時に必要な内容を効率よく引き出すことが求められます。。

どちらも筒状の入れ物(スタック・キュー)に球(データ)を順番に入れていくようなイメージです。

スタックとは

スタックとは、データを出し入れするための「片側に蓋をされた(底のある)」筒のことです。

データを格納するときも取り出すときも、1つの入り口(蓋がない方)からしか出し入れ出来ないことが特徴です。

データをA,B,C,Dの順番にスタックに格納したとしましょう。
この場合、データは底(蓋)側からA,B,C,Dの順に入っています。

取り出すときはどのような順番になるでしょうか?
当然、蓋がある方から取り出すことは出来ないので、
D⇒C⇒B⇒Aの順番に取り出すことになります。

このような出し入れの順番をLIFO(Last in First Out)、または、後入れ先出しといいます。
最後に格納したデータが一番最初に取り出されるためです。

特に、スタックにデータを格納することをPUSH、スタックからデータを取り出すことをPOPといいます。

キューとは

キューとは、データを出し入れするための「両側に蓋がない(底のない)」筒のことです。

データを格納する入り口とデータを取り出す出口が別であることが特徴です。

データをキューにA,B,C,Dの順番に格納したとしましょう。
データは出口に近い方からA,B,C,Dの順に入っています。
(↑入り口側からカウントすると、D,C,B,Aの順)

取り出すときはどのような順番になるでしょうか?
出口に近い方から取り出すので、A⇒B⇒C⇒Dの順に取り出すことになります。

このような出し入れの順番をFIFO(First in First Out)、または、先入れ先出しといいます。
最初に格納したデータが一番最初に取り出されるためです。

特に、キューにデータを格納することをエンキュー、キューからデータを取り出すことをデキューといいます。

スタックとキューの出し入れ順を考えよう

データを実際に格納したり、取り出したりして利用する際、必ずしも全てのデータを一度格納してから、取り出すとは限りません。

データの出し入れは必要に応じて、格納・取り出しが入り組みながら行われています。
具体例をもとに、スタックとキューでどのような違いが表れるのかイメージしていきましょう。

A,B,C,Dというデータを以下のような順で操作したときを想定します。

①A,Bを格納
②1つ取り出し
③Cを格納
④2つ取り出し
⑤D,Eを格納
⑥残りすべてを格納

<スタックの場合>

①A,Bを格納
②Bを取り出し
③Cを格納
④C⇒Aの順に取り出し
⑤D,Eを格納
⑥E⇒Dの順に取り出し

全体の取り出し順をまとめると、B⇒C⇒A⇒E⇒Dの順に取り出すことになります。

<キューの場合>

①A,Bを格納
②Aを取り出し
③Cを格納
④B⇒Cの順に取り出し
⑤D,Eを格納
⑥D⇒Eの順に取り出し

全体の取り出し順をまとめると、A⇒B⇒C⇒D⇒Eの順に取り出すことになります。

スタックとキューで取り出す順番に大きく違いがあることが分かります。
特にスタックは格納・取り出しが入り組むと順番が変わるので注意しましょう。

タイトルとURLをコピーしました