Stackは 線形データ構造 これは、LIFO(後入れ先出し)ルールに従って挿入および削除されるオブジェクトのコンテナーとして機能します。

 
Stackには3つの主要な操作があります。 push, pop、 と peek。これらの操作については、前回の投稿で説明しました。 アレイStackデータ構造のリンクリスト実装 この記事では、Stackデータ構造のC++実装についてクラスを使用して説明します。

 
以下は、以下の操作をカバーするC++でのStack実装です。

  1. push: Stackの一番上、現在の一番上の要素の上に新しい要素を挿入します。
  2. pop: Stackの一番上の要素を削除し、それによってそのサイズを1つ減らします。
  3. isEmpty: Stackが空の場合、つまりサイズがゼロの場合はtrueを返します。それ以外の場合は、falseを返します。
  4. isFull: Stackがいっぱいの場合、つまり、Stackのサイズが割り当てられた最大容量に達した場合にtrueを返します。それ以外の場合は、falseを返します。
  5. peek: Stackを変更せずに、Stackに存在する最上位の要素を返します。
  6. size: Stackに存在する要素の数を返します。

Practice this problem

アレイを使用したStackの実装:

ダウンロード  コードを実行する


Output:
 
Inserting 1
Inserting 2
Removing 2
Removing 1
Inserting 3
The top element is 3
The stack size is 1
Removing 3
The stack is empty

 
すべてのStack操作の時間計算量は一定です。 O(1).

STLの使用:

C++標準ライブラリのコンテナタイプのいくつかには push_backpop_back 次のようなLIFOセマンティクスを使用した操作 std::stack, std::list.

std::stack


ダウンロード  コードを実行する

std::list


ダウンロード  コードを実行する

Output:
 
The top element is D
The stack size is 2
The stack is not empty

 
こちらも参照:

JavaでのStack実装

PythonでのStack実装