基本情報技術者試験 2018年度 = 平成30年度・春期 午前 問5

 次の二つのスタック操作を定義する。
  PUSH n  :スタックにデータ(整数値n )をプッシュする。
  POP :スタックからデータをポップする。
 空のスタックに対して、次の順序でスタック操作を行った結果はどれか。
  PUSH 1 → PUSH 5 → POP → PUSH 7 → PUSH 6 → PUSH 4 → POP → POP → PUSH 3

 ア │ │    ├─┤    │1│    ├─┤    │7│    ├─┤    │3│    └─┘

 イ │ │    ├─┤    │3│    ├─┤    │4│    ├─┤    │6│    └─┘

 ウ │ │    ├─┤    │3│    ├─┤    │7│    ├─┤    │1│    └─┘

 エ │ │    ├─┤    │6│    ├─┤    │4│    ├─┤    │3│    └─┘


解答



解説

 スタック(stack)は、データを後入れ先出しLIFO = Last-In First-Out)で蓄えます。ちょうど、机の上に重ねた皿のように、最も上に重ねた皿を優先的に取り出すのと同様です。
 本問でのスタックの変化を以下に示します。

   1   5       7   6   4           3    ↓   ↓   ↑   ↓   ↓   ↓   ↑   ↑   ↓ ┐ ┌ ┐ ┌ ┐ ┌ ┐ ┌ ┐ ┌ ┐ ┌ ┐ ┌ ┐ ┌ ┐ ┌ ┐ ┌ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ │ │ │ │ │ │ │ │ │ │ │ │ │4│ │ │ │ │ │ │ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ │ │ │ │ │ │ │ │ │ │ │6│ │6│ │6│ │ │ │3│ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ │ │ │ │ │5│ │ │ │7│ │7│ │7│ │7│ │7│ │7│ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ ├─┤ │ │ │1│ │1│ │1│ │1│ │1│ │1│ │1│ │1│ │1│ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘



BohYoh.comトップページへ