平成24年秋午前 問5

四つのデータA、B、C、Dがこの順に入っているキューと空のスタックがある。手続pop_enq,deq_push を使ってキューの中のデータをD、C、B、Aの順に並べ替えるとき、deq_push の実行回数は最小で何回か。ここで、pop_enq はスタックから取り出したデータを キューに入れる操作であり、deq_push はキューから取り出したデータをスタックに入れる操作である。

ア 2
イ 3
ウ 4
エ 5

キューは先入れ先出し法。入ってきた順番に出て行く。

━┳━┳━┳━┳━┳
⇒┃A┃B┃C┃D┃⇒
━┻━┻━┻━┻━┻

スタックは後入れ先出し法。一番最後に入ってきたやつが一番最初に出てく。

↓     ↑A
┣━┫ ┣━┫
┃A┃ ┃ ┃
┣━┫ ┣━┫
┃B┃ ┃B┃
┣━┫ ┣━┫
┃C┃ ┃C┃
┣━┫ ┣━┫
┃D┃ ┃D┃
┗━┛ ┗━┛
問題では逆順にしたいのだから、D、C、Bと順番に取り出してそのままスタックにいれ、スタックからB、C、Dと取り出してキューに入れればいいだけである。

deq_pushもpop_enqも3回の操作で終わる。
正解はイである。

この問題は実際に紙に書いて手を動かしてみれば一発で分かる。

タグ:
カテゴリー: 基本情報午前