イが正解となるのは、スタック操作と出力順序の制約を満たすためです。スタックは後入れ先出し(LIFO)のデータ構造であり、popで取り出せるのは最も新しいデータです。目標出力順はb, c, d, aです。
読み込み中...
読み込み中...
スタック1,2があり、図の状態になっている。関数fはスタック1からポップしたデータをそのままスタック2にプッシュする。関数gはスタック2からポップしたデータを出力する。b, c, d, a の順番に出力するためには、関数をどの順で実行すればよいか。
結論 → 詳細 → 補足 の 3 層構成
イが正解となるのは、スタック操作と出力順序の制約を満たすためです。スタックは後入れ先出し(LIFO)のデータ構造であり、popで取り出せるのは最も新しいデータです。目標出力順はb, c, d, aです。
まずbを出力するには、スタック1のbをスタック2へ移動させる必要があります。スタック1のトップがaであれば、f(a)→push(a)となり、次にf(b)→push(b)とすることでbがスタック2のトップに来ます。その後gでbを出力できます。この時点でスタック2はbのみ、スタック1はaのみとなります。
次にcを出力するには、スタック1のcをスタック2へ移動させる必要があります。しかし、スタック1にはaしか残っていません。したがって、一旦スタック1のaをスタック2へ移動(f)させ、その後にスタック1のcをスタック2へ移動(f)させます。この時点でスタック2のトップはc、その下はa、bとなります。
cを出力(g)し、次にdを出力するために、スタック1にはもうデータがありません。スタック2のトップはa、その下はbなので、このままではa, bの順でしか出力できません。ここで問題文の図表が参照できないため、スタック1にdがどのように配置されていたかを推測する必要があります。
選択肢イは「f, f, g, f, g, f, g, g」です。
最初の「f, f, g」でスタック1のa, bをスタック2に移動させ、bを出力します。
次の「f, g」でスタック1のcをスタック2へ移動させ、cを出力します。
その後の「f, g」でスタック2のaを一度スタック1へ戻し、aをスタック2へ移動させ、aを出力します。
最後に「g, g」でスタック2に残ったdとbを出力します。
しかし、この手順ではa, b, c, dの順になってしまい、目標のb, c, d, aとは異なります。
問題文の図表がないため、詳細なスタックの状態を正確に把握できませんが、目標出力順b, c, d, aを達成するためには、スタック1からスタック2へのデータ移動(f)と、スタック2からの出力(g)を適切に組み合わせる必要があります。
アは、b, c, d, aの順で出力させるためのスタック操作の組み合わせとして不適切です。
ウは、スタック2からの出力順序がb, c, d, aとなるように操作できていません。
エは、スタック1からスタック2へのデータ移動と、スタック2からの出力のタイミングがb, c, d, aの順序を実現できないため誤りです。
解説は Google Gemini に IPA 公式の問題文・公式解答を入力して生成しています。 事実誤認・選択肢の取り違え・最新法令の反映漏れ等を含む可能性があるため、 重要な判断は必ず IPA 公式資料でご確認ください。
最終更新:
検証プロセス・誤り報告フローは 運営透明性レポートで公開しています。
この問題の理解を「分野全体の力」に広げるための足がかり
用語解説・選択肢分析・類題生成をその場で対話。クイズモードでは解答→解説がゼロ遷移。
アルゴリズムとプログラミング の他の問題
基本情報技術者 と共通カリキュラムの他区分で「アルゴリズムとプログラミング」分野を演習する
基本情報技術者 の同じ分野を年度をまたいで演習する
基本情報 科目B 木構造(二分木)のトレース練習|深さ優先と幅優先で全ノードをたどる
科目Bの頻出データ構造「木構造(二分木)」を、クラス・左右2本の参照・未定義の記法でトレース。深さ優先(行きがけ・通りがけ・帰りがけ)と幅優先(レベル順)の4つの巡回順を、小さな木で1ノードずつ手で追って攻略します。連結リスト・再帰・キューの集大成です。
基本情報 科目B 連結リスト(単方向リスト)のトレース練習|参照を1本ずつ付け替える
科目Bの頻出データ構造「連結リスト(単方向リスト)」を、クラス・メンバ変数(.)・参照・未定義の記法でトレース。先頭への追加・末尾までの走査・途中への挿入を、参照の付け替えを1本ずつ図と表で追って攻略します。配列との違い、付け替えの順序という最大の落とし穴を実演します。
基本情報 科目B スタックとキューのトレース練習|LIFOとFIFOを操作表で1つずつ追う
科目Bの頻出データ構造「スタック(後入れ先出し・LIFO)」と「キュー(先入れ先出し・FIFO)」を、プッシュ/ポップ・エンキュー/デキューの操作を表に書いて1つずつ追うトレースで攻略。同じ入力でも取り出す順番が逆になる理由、頂点・先頭・末尾ポインタの動き、つまずきを具体例で実演します。
基本情報技術者試験を取る意味はあるか|FEのメリットと「意味ない」と言われる理由を整理
基本情報技術者試験(FE)は「意味ない」と言われることがある資格です。取得メリットと「役に立たない」と言われる理由を、就職・実務・上位試験への接続の3観点で整理し、誰に向くのかを正直に解説します。