正答3
解説
正解は3です。
スタックは、最後に入れたデータを最初に取り出すLIFO(Last In First Out:後入れ先出し)のデータ構造です。
A、B、C、Dの順に積む操作(プッシュ)と、最上部から取り出す操作(ポップ)を、途中で自由に挟めるものとして考えます。
【選択肢別解説】
1:× Aを積んですぐ取り出し、次にB、C、Dを積んでDを取り出すと、最上部はCになります。
その下にあるBを先に取り出すことはできないので、出力できません。
2:× A、Bを積んでBを取り出し、C、Dを積んでDを取り出すと、最上部はCです。
その下のAを先に取り出せないので、出力できません。
3:○ A、B、Cを積んでCを取り出し、続けてBを取り出します。
次にDを積んですぐ取り出し、最後に残ったAを取り出すと、C、B、D、Aの順になります。
4:× A〜Dをすべて積んでD、Cを取り出すと、最上部はBです。
その下のAを先に取り出せないので、出力できません。
【ポイント】
一度積んだデータは、上にあるデータを取り出さない限り出力できません。
「ある時点で欲しいデータがスタックの最上部にあるか」を順に確かめると判定できます。