Stack
その名の通り、データを積み重ねていくデータ構造です。
データを積み重ねていき、取り出すときは最後に入れたデータが取り出されます。
主に深さ優先探索などで使われます。
力試しに下の問題をStackを用いて解いてみるといいでしょう。
以下にStackの主な仕様を記述します。
事前準備 <stack>をインクルードする。 宣言方法 stack<型>構造体の名前 例:stack<int>st; int型の要素を格納する st という名前のデータ構造を宣言します。 主な関数 push(a):コンテナ(配列)の先頭に a を格納します。 pop():コンテナの先頭の要素を削除します。 top():コンテナの先頭の要素を返します。削除は行いません。 size():コンテナに格納されている要素数を返します。 empty():コンテナに何も格納されてない場合0以外を、格納されている場合1を返します。 「 st.push(a) 」 のようにプログラム上で記述します。
問題
ある指定された命令が与えられるので、命令通りに動くプログラムを作成してください。
配列 L は最初空です。
push a 配列 L の先頭に a を格納してください。 top 配列 L の先頭の要素を出力してください。 pop 配列 L の先頭の要素を削除してください。 exit プログラムを終了してください。
制約
- 命令の数は 106 を超えない。
- 配列が空の時に、"top"もしくは"pop"が与えられることはない。
入出力例
入力例
push 4 push 6 top pop push 2 top top exit
出力例
6 2 2