HOME»基本情報技術者平成29年秋期»午前問5
基本情報技術者平成29年秋期 午前問5
問5
A,B,C,Dの順に到着するデータに対して,一つのスタックだけを用いて出力可能なデータ列はどれか。
- A,D,B,C
- B,D,A,C
- C,B,D,A
- D,C,A,B
- [出題歴]
- 基本情報技術者 H16春期 問12
- 基本情報技術者 H22秋期 問5
分類
テクノロジ系 » アルゴリズムとプログラミング » データ構造
正解
ウ
解説
スタックは後入れ先出し(LIFO)のデータ構造で、PUSH命令とPOP命令によってデータを操作します。"後入れ先出し"ですので、スタックに先に入れたデータは、後から入れたデータよりも先に出力することができません。
選択肢の出力順をひとつずつ試していけばわかるのですが、4つのデータ列の中で出力可能なのは「C,B,D,A」で、その出力の過程は以下の通りです。
選択肢の出力順をひとつずつ試していけばわかるのですが、4つのデータ列の中で出力可能なのは「C,B,D,A」で、その出力の過程は以下の通りです。
- PUSH(A)
- PUSH(B)
- PUSH(C)
- POP(C)
- POP(B)
- PUSH(D)
- POP(D)
- POP(A)
- PUSH(A) [A]
POP(A) [] ※Aを出力
PUSH(B) [B]
PUSH(C) [BC]
PUSH(D) [BCD]
POP(D) [BC] ※Dを出力
BはCより先にスタックに格納されたので、Cより先にBを出力することができません。 - PUSH(A) [A]
PUSH(B) [AB]
POP(B) [A] ※Bを出力
PUSH(C) [AC]
PUSH(D) [ACD]
POP(D) [AC] ※Dを出力
AはCより先にスタックに格納されたので、Cより先にAを出力することができません。 - 正しい。
- PUSH(A) [A]
PUSH(B) [AB]
PUSH(C) [ABC]
PUSH(D) [ABCD]
POP(D) [ABC] ※Dを出力
POP(C) [AB] ※Cを出力
AはBより先にスタックに格納されたので、Bより先にAを出力することができません。