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

基本情報技術者試験スタック・キュー」の問題

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
同じ入力列 1, 2, 3, 4 を、(A) スタック(push 後にすべて pop)と (B) キュー(enqueue 後にすべて dequeue)でそれぞれ全要素を取り出す。次の手続を実行したとき、出力 outA(スタック)と outB(キュー)を連結した文字列の組はどれか。push/pop は LIFO、enqueue/dequeue は FIFO に従う。
○手続: run()
  // (A) スタック
  整数型: v
  for (v を 1 から 4 まで 1 ずつ増やす) stk.push(v) endfor
  while (stk が空でない) outA ← outA + stk.pop() endwhile
  // (B) キュー
  for (v を 1 から 4 まで 1 ずつ増やす) que.enqueue(v) endfor
  while (que が空でない) outB ← outB + que.dequeue() endwhile
outA="4321",outB="4321"
outA="1234", outB="4321"(逆に割当)
outA="1234", outB="1234"
outA="4321", outB="1234"
正解
outA="4321", outB="1234"

スタックは最後に積んだ 4 から取り出すため出力は 4321、キューは最初に入れた 1 から取り出すため出力は 1234 となる。両者の対比が正しく表れる エが正しい。

?選択肢ごとの解説

ア ×キューも逆順になると誤認した、FIFO が入力順を保つ性質を見落とした誤りである。
イ ×スタックとキューの出力を取り違え、LIFO と FIFO を逆に割り当てた誤りである。
ウ ×スタックも入力順になると誤認した、LIFO による逆転を見落とした誤りである。
エ ○スタックは最後に積んだ 4 から取り出すため出力は 4321、キューは最初に入れた 1 から取り出すため出力は 1234 となる。両者の対比が正しく表れる エが正しい。
この問題の「深掘り・誤答の完全解説・試験のコツ・覚え方」はアプリで。

基本情報技術者試験の全問を、一問ごとにAIの8-ways解説つきで。SRS暗記カード・全真模試・弱点診断まで。まずは無料で。

無料ではじめる →

作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0108

【基本情報技術者試験】スタック・キューの問題と解答・解説|ukamiru 過去問