A、B、C、Dの順に到着するデータに対して、一つのスタックだけを用いて出力可能なデータ列はどれか。
ア |
A、D、B、C |
|
イ |
B、D、A、C |
ウ |
C、B、D、A |
|
エ |
D、C、A、B |
答え ウ
【解説】
それぞれの出力を考えてみる。(“[ ]”はスタックの状態、“{ }”は出力の結果)
ア |
- Aをスタックに入れる。 [A], { }
- Aをスタックから出す。 [ ], {A}
- Bをスタックに入れる。 [B], {A}
- Cをスタックに入れる。 [C, B], {A}
- Dをスタックに入れる。 [D, C, B], {A}
- Dをスタックから出す。 [C, B], {A, D}
ここで次にスタックから出せるのはCなので選択肢の出力はできない。 |
イ |
- Aをスタックに入れる。 [A], { }
- Bをスタックに入れる。 [B, A], { }
- Bをスタックから出す。 [A], {B}
- Cをスタックに入れる。 [C, A], {B}
- Dをスタックに入れる。 [D, C, A], {B}
- Dをスタックから出す。 [C, A], {B, D}
ここで次にスタックから出せるのはCなので選択肢の出力はできない。 |
ウ |
- Aをスタックに入れる。 [A], { }
- Bをスタックに入れる。 [B, A], { }
- Cをスタックに入れる。 [C, B, A], { }
- Cをスタックから出す。 [B, A], {C}
- Bをスタックから出す。 [A], {C, B}
- Dをスタックに入れる。 [D, A], {C, B}
- Dをスタックから出す。 [A], {C, B, D}
- Aをスタックから出す。 [ ], {C, B, D, A}
|
エ |
- Aをスタックに入れる。 [A], { }
- Bをスタックに入れる。 [B, A], { }
- Cをスタックに入れる。 [C, B, A], { }
- Dをスタックに入れる。 [D, C, B, A], { }
- Dをスタックから出す。 [C, B, A], {D}
- Cをスタックから出す。 [B, A], {D, C}
ここで次にスタックから出せるのはBなので選択肢の出力はできない。 |
【キーワード】
・スタック
【キーワードの解説】
- スタック
データを一時的に記憶するためにメモリに割り当てる領域のことです。
データの取り出しを行うとき、取り出されるデータは最後に挿入されたデータになるので、後入れ先出し方式(Last-In First-Out、LIFO)とも呼ばれます。
もっと、「スタック」について調べてみよう。
戻る
一覧へ
次へ
|