メインコンテンツへ
アルゴリズムとプログラミングアルゴリズムとデータ構造

空のスタックに対して、push(1)、push(2)、push(3)、pop、push(4)、pop、pop の操作を順に行ったとき、最後に pop で取り出される値はどれか。

ア.1
イ.3
ウ.4
エ.2正解

解説

スタックは LIFO(後入れ先出し)——洗った皿を上に重ねて、上から順に使う家事スタイルです。

なぜ エ が正解か

操作を追跡します。push 1,2,3 でスタックは [1,2,3](top=3)。pop で 3 が出て [1,2]。push 4 で [1,2,4]。pop で 4、[1,2]。最後の pop で top の 2 が取り出されます。よってエが正解。

なぜ ア は間違いか

1 は最初に push した値で、スタックの一番底。LIFO 構造ではすべての要素を取り出した「最後の最後」に出てくるはずで、まだ残っています。

なぜ イ は間違いか

3 は最初の pop で取り出された値。途中で抜けているので、最後の pop には登場しません。「pop されたものを後で数える」と取り違えた誤答。

なぜ ウ は間違いか

4 は2回目の pop で取り出された値。今回の最後の pop はそれよりさらに後の操作で、4はもうスタック上に存在しません。

出典: AI生成問題(学習用)