スタックの出力順序|科目A-1(応用情報技術者) 令和7年 春期午前試験 問5

出典:令和7年春期 午前 問5 分野:アルゴリズムとプログラミング / データ構造
A,B,Cの順序で入力されるデータがある。各データについてスタックへの挿入と取出しを1回ずつ行うことができる場合,データの出力順序は何通りあるか。 スタックの出力順序
  • ア:3
  • イ:4
  • ウ:5
  • エ:6
応用情報技術者
解説

スタックは、最後に挿入したデータを最初に取り出すLIFO方式です。A・B・Cはこの順に入力されますが、各データを挿入した直後に取り出すか、後のデータを挿入してから取り出すかによって、出力順序が変わります。

可能な出力順序は、次の5通りです。

1.A・B・C

Aを挿入して取り出し、Bを挿入して取り出し、Cを挿入して取り出します。

2.A・C・B

Aを挿入して取り出した後、B・Cの順に挿入し、C・Bの順に取り出します。

3.B・A・C

A・Bの順に挿入し、B・Aの順に取り出した後、Cを挿入して取り出します。

4.B・C・A

A、Bの順に挿入してBを取り出し、Cを挿入して取り出した後、最後にAを取り出します。

5.C・B・A

A・B・Cの順に全て挿入し、C・B・Aの順に取り出します。

一方、C・A・Bという順序は実現できません。Cを最初に出力するにはA、B、Cを全てスタックへ挿入する必要がありますが、Cを取り出した後はBがAより上にあるため、AをBより先に取り出せないからです。

よって、出力順序は5通りです。

したがって、が適切です。

TSUNAGARU-ADVICE

まず押さえたいこと

スタックは後入れ先出し(LIFO)なので、最後に挿入したデータから取り出されます。この種の問題では、A、B、Cを順に受け取りながら、「挿入する」「取り出す」の操作を組み合わせて、どの出力順序が実現できるかを調べます。

迷ったときの判断軸

入力順とは異なる順序でも出力できますが、スタック内にあるデータを飛び越えて取り出すことはできません。例えば、あるデータの上に後から入れたデータが残っていれば、上のデータを先に取り出さなければならないという制約を意識して、可能な並びを一つずつ確認しましょう。

科目Bにつなげるために

特にプロフェッショナルデジタルスキル(システム)試験合格を目指す方は、スタックを単なる用語ではなく、pushとpopの操作を時系列で追跡できるデータ構造として理解しましょう。式の評価・関数呼出し・再帰処理などのアルゴリズム問題にもつながります。