問題
配列で実装したスタックに対し、push, push, push, pop, push, pop, pop の順に操作を行った。最後のpop後にスタックに残っている要素数はいくつか。
選択肢
- 10
- 21
- 32
- 43
正解
2. 1
詳しい解説を見る解説を閉じる
解説
スタックは後入れ先出し(LIFO)のデータ構造で、pushで要素を積み、popで最後に積んだ要素を取り出す。操作を順に追うと、push×3で要素数3、popで2、pushで3、popで2、最後のpopで1となり、残る要素数は1個である。0や2は操作の数え漏れ・数え過ぎによる誤りで、pushは計4回、popは計3回だから差し引き4−3=1個と検算できる。この「pushの総数−popの総数=残存要素数」という関係は、途中でスタックが空にならない限り常に成り立つ。スタックは関数呼出しの戻り先管理や逆ポーランド記法の評価に使われ、先入れ先出し(FIFO)のキューと対比して頻出なので、LIFOとFIFOの違いを確実に区別しておきたい。
一問一答
全400問を繰り返し学習