ソフトウェア開発技術者平成15年春期 午前問10

問10

A,B,Cの順序で入力されるデータがある。各データについてスタックへの挿入と取出しを1回ずつ任意のタイミングで行うことができる場合,データの出力順序は何通りあるか。
10.png/image-size:162×109
  • 3
  • 4
  • 5
  • 6

分類

テクノロジ系 » アルゴリズムとプログラミング » データ構造

正解

解説

A,B,Cの出力順序としては「3!=6種類」があります。それぞれが出力可能であるかを検証します。
A,B,C
push(A) → pop → push(B) → pop → push(C) → pop の順序で出力可能です。
10_1.png/image-size:406×133
A,C,B
push(A) → pop → push(B) → push(C) → pop → pop の順序で出力可能です。
10_2.png/image-size:406×133
B,A,C
push(A) → push(B) → pop → pop → push(C) → pop の順序で出力可能です。
10_3.png/image-size:406×133
B,C,A
push(A) → push(B) → pop → push(C) → pop → pop の順序で出力可能です。
10_4.png/image-size:406×133
C,A,B
push(A) → push(B) → push(C) → pop → pop ❌
※Cの出力後、Bより先にAを出力することができないため無理な順序です。
10_5.png/image-size:346×133
C,B,A
push(A) → push(B) → push(C) → pop → pop → pop の順序で出力可能です。
10_6.png/image-size:406×133
以上より、データの出力順序は5通りになります。したがって「ウ」が正解です。

スタックの構造上、後からpushされた要素を出力した後、その要素より2つ以上前にpushされた要素を続けて出力することはできません。
© 2010- 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop