このページでは、データ構造としてのスタックを取り上げます。コールスタックのことを単にスタックと呼ぶ場合もあります。
後で追加したデータから取り出されるという特徴をもつデータ構造の一種です。
「後で追加したデータから取り出されるという特徴」は、後入れ先出し(LIFO: Last-In First-Out)と呼ばれます。また、スタックにデータを追加することをプッシュ(push)、取り出すことをポップ(pop)と呼びます。
後入れ先出しという特徴はよく、机の上に積み上げた本や書類で例えられます。積み上げられた本があるとき、新しい本は一番上に乗せるしかなく、取り上げることができるのは一番上に積まれている本である、ということです。
このような特徴を実現する基本機能(プッシュとポップ)を定義した型(抽象データ型)のことを指して、スタックと呼ぶこともあります。
抽象データ型としてのスタックも含め、その考え方や実装方法を、アルゴリズムとデータ構造編【データ構造】第5章で解説しています。
C++ の標準ライブラリには、スタックを実装した std::stack があります(C++編【標準ライブラリ】第10章)]{.note}
スタックは非常に有用なデータ構造です。たとえば、関数の呼び出しと、呼び出し元への復帰を実現するために、引数やローカル変数、戻り先のメモリアドレス(リターンアドレス)を保存するなどの用途で使われています(コールスタック)。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
Twitter でツイート/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |