スタック(stack)
スタックとは、データ構造の一つ(データを格納する入れ物)で、入ってきたデータを順番に格納し、最後に格納したデータから順に取り出す、 後入れ先出し(LIFO:Last-In First-Out)方式のデータ構造です。
上記はスタックのイメージ図です。スタックに入れる時は、順番に格納していき、スタックから取り出す時は、最後に格納したデータから順番に取り出します。
スタックと似たようなデータ構造に「キュー(queue)」があります。
キューは、先に格納したデータから順に取り出す 先入れ先出し(FIFO:First-In First-Out)の方式のデータ構造です。
それに比べて、スタックは、後に格納したデータから取り出す 後入れ先出し(Last-In First-Out)の方式のデータ構造です。
スタックの操作
スタックに追加する(PUSH)
スタックに追加する操作ことを、プッシュ(PUSH)といいます。
以下は、プッシュ(PUSH)の動作イメージです。
データ1をスタックに「PUSH」
空のスタックに「データ1」を追加(PUSH)します。
スタックに「データ1」が追加されました。
データ2をスタックに「PUSH」
続いて「データ2」をスタックに追加(PUSH)します。
「データ2」は「データ1」の後に格納されます。
スタックから取り出す(POP)
スタックから取り出すことを、ポップ (POP)といいます。
以下は、ポップ (POP)の動作イメージです。
スタックからデータを取り出す(POP)
スタックに「データ1」と「データ2」が格納されているとします。先に格納したのが「データ1」、後に格納したので「データ2」です。
このスタックからデータを取り出す(POP)と、後に格納した「データ2」が取得できます。
再びスタックからデータを取り出す(POP)
再びスタックからデータを取り出すと、残りの「データ1」が取得できます。
このようにポップ (POP)では、後に格納されたデータから順番に取り出されます。