オリジナル模擬試験2 問5
問5解説へ
スタックとキューの二つのデータ構造がある。次の手続を順に実行した場合,変数 x に代入されるデータはどれか。ここで,データ y をスタックに挿入することを push(y),スタックからデータを取り出すことを pop(),データ y をキューに挿入することを enq(y),キューからデータを取り出すことを deq(),とそれぞれ表す。
push(a)
push(b)
enq(pop())
enq(c)
push(d)
push(deq())
x ← pop()
push(b)
enq(pop())
enq(c)
push(d)
push(deq())
x ← pop()
- a
- b
- c
- d
広告
解説
スタックは後入先出し(LIFO),キューは先入先出し(FIFO)の特徴をもつデータ構造です。
スタックとキューをひとつずつ用意して処理の経過を追っていきます。
[push(a)]
スタック | a ←|
[push(b)]
スタック | a, b ←|
[enq(pop())]
スタック | a |→b
キュー |→ b |
[enq(c)]
スタック | a |
キュー |→ c, b |
[push(d)]
スタック | a, d ←|
キュー |→ c, b |
[push(deq())]
キュー | c |→b
スタック | a, d, b ←|
[x ← pop()]
スタック | a, d |→b
x ← b
スタックとキューをひとつずつ用意して処理の経過を追っていきます。
[push(a)]
スタック | a ←|
[push(b)]
スタック | a, b ←|
[enq(pop())]
スタック | a |→b
キュー |→ b |
[enq(c)]
スタック | a |
キュー |→ c, b |
[push(d)]
スタック | a, d ←|
キュー |→ c, b |
[push(deq())]
キュー | c |→b
スタック | a, d, b ←|
[x ← pop()]
スタック | a, d |→b
x ← b
広告