問題プレビューID: 7d6b7f80

問 7

空の状態のキューとスタックの二つのデータ構造がある。次の手順を順に実行した場合,変数 xx に代入されるデータはどれか。ここで,手続で引用している関数は,次のとおりとする。

〔関数の定義〕

  • push(yy):データ yy をスタックに積む。
  • pop():データをスタックから取り出して,その値を返す。
  • enq(yy):データ yy をキューに挿入する。
  • deq():データをキューから取り出して,その値を返す。

〔手続〕

  • push(a)
  • push(b)
  • enq(pop())
  • enq(c)
  • push(d)
  • push(deq())
  • x←x \leftarrow pop()
解説

スタックは後入れ先出し(LIFO),キューは先入れ先出し(FIFO)である。手続を順に追う。

  1. push(a):スタック [a]
  2. push(b):スタック [a, b]
  3. enq(pop()):pop() はスタックの先頭(最後に積んだもの)b を返す。キュー [b],スタック [a]
  4. enq(c):キュー [b, c]
  5. push(d):スタック [a, d]
  6. push(deq()):deq() はキューの先頭 b を返す。スタック [a, d, b]
  7. x←x \leftarrow pop():スタックの先頭 b を取り出す。

したがって xx に代入されるデータは b であり,正解は「イ」である。