第2種情報処理技術者試験 1996年度 = 平成8年度・春期 午前 問12

 次の二つのスタック操作を定義する。
  PUSH n :スタックにデータ(整数n)をプッシュする。
  POP :スタックからデータをポップする。

 空のスタックに対して、次の順序で操作を行った結果はどれか。
  PUSH 1 → PUSH 5 → POP → PUSH 7 → PUSH 6 → PUSH 4 →
  POP → POP → PUSH 3

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

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

  ウ   │ │  ├─┤  │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トップページへ