問 題
図Ⅰのように先に入れたデータほど先に取り出すFIFO(First In First Out)構造のキューと、図のように後に入れたデータほど先に取り出す LIFO (Last In First Out)構造のスタックについて考える。
いま図 Ⅲ の状態にあるキューと、図 Ⅳ の状態にあるスタックを一つずつ用意して次の一連の操作を実行したところキューの状態が図Ⅴのようになった。
「enq(c)→ push(deq())→ enq(pop())→ pop()→ pop()→ push(deq())→ enq(c)→ push(deq())」
図Ⅴの ア イ に当てはまるものの組合せとして最も妥当なのはどれか。
ア イ
1. a b
2. a c
3. b c
4. c a
5. c b
解 説
・enq(c) で、キューに c を上から押し込むので 「caccb」 です。
・push(deq()) で、キューの下から b 取り出して、スタックに上から b 押し込むので、キュー「cacc」、スタック「bbcac」になります。
・enq(pop())で、スタックの上から b 取り出して、キューに上から押し込むので、キュー「bcacc」、スタック「bcac」になります。
・pop() × 2 で、スタックから b,c 取り出すので、スタック「ac」です。
・push(deq())で、キューから c 取り出して、スタックに 上から押し込むので、キュー「bcac」、スタック「cac」になります。
・enq(c) で、c をキューに上から押し込むので、キュー「cbcac」です。
・push(deq())で、キューから c 取り出して、スタックに上から押し込むので、キュー「cbca」、スタック「ccac」です。アが b 、イが c です。
以上より、正解は 3 です。
コメント