アルゴリズムとプログラミング

基本情報技術者試験 科目A免除 修了試験 20170611 実施分 問5

空の状態のキューとスタックの二つのデータ構造がある。次の手続を順に実行した場合,変数 x に代入されるデータはどれか。ここで,手続で引用している関数は,次のとおりとする。
〔関数の定義〕 push(y):データ y をスタックに積む。 pop():データをスタックから取り出して,その値を返す。 enq(y):データ y をキューに挿入する。 deq():データをキューから取り出して,その値を返す。 〔手続〕 push(a) push(b) enq(pop()) enq(c) push(d) push(deq()) x ← pop()
答えを選ぶ

出典:基本情報技術者試験 科目A免除 修了試験 20170611 実施分 問5(問題文は IPA の公開問題。解説は当サイト作成)

答えと解説を見る

正解:イ

覚える知識

キューとスタックの操作トレース

スタックは後入れ先出し、キューは先入れ先出しのデータ構造である。

この問題で必要なこと

スタックはLIFO、キューはFIFOで動作する。手続を順にたどると、push(a),push(b),pop()→b を enq し、enq(c)、push(d)、deq()→b を push、最後の pop() が b を返す。

ひっかけ

キューをLIFOと取り違えたり、スタックとキューの取出し順を逆にしたりすると別の値になる。

この知識の出題:本試験系 0 回・免除試験 5 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「スタックとキュー(LIFO と FIFO)」で学ぶ

同じ問題が出た回

同じ知識の過去問