令和3年度 春期 応用情報技術者試験 午前 問5
の順序で入力されるデータがある。各データについてスタックへの挿入と取出しを1回ずつ行うことができる場合,データの出力順序は何通りあるか。

図の説明テキスト
スタックへのデータの出し入れを示す模式図。水平方向の線から下向きの矢印が伸び、上部が開いた四角形(内部に縦書きで「スタック」と記載)を指している。水平線の右端には入力データである「A, B, C」が並び、左端からは左向きの矢印が伸びて出力方向を示している。
解答・解説
正解: ウ. 5
スタックは 後入れ先出し(LIFO: Last In First Out) のデータ構造です。図の模式図が示すように、データは上部の開口部から挿入され、最後に入れたものから順に取り出されます。
データは の順でスタックに挿入されます。スタックへの挿入と取出しのタイミングの組み合わせによって、以下のようなデータの出力順序が考えられます。
- 最初に を出力する場合( を挿入してすぐ取り出す)
- を挿入・取出し、 を挿入・取出し
- と続けて挿入し、スタックから順に取出し
- 最初に を出力する場合( と挿入して を取り出す)
- 最初に を出力する場合( をすべて挿入してから順に取り出す)
- 取出しを続けると、後から入れた順に出力される
3つのデータを並べる順列は 通りありますが、 という出力順序だけは実現できません。なぜなら、最初に が出力された時点でスタック内には下から の順でデータが積まれており、次に出力されるのは必ず となるためです。
したがって、出力可能な順序は5通りとなるため、ウ が正解です。
各選択肢の解説
- ア(3): 誤りです。出力順序は上記の通り5通り存在します。
- イ(4): 誤りです。出力順序は上記の通り5通り存在します。
- ウ(5): 正解です。
- エ(6): 誤りです。3つのデータ のすべての順列( 通り)が出力できるわけではなく、 の順序はスタックの構造上不可能なため6通りにはなりません。