午前問62
下から上へ品物を積み上げて,上にある品物から順に取り出す装置がある。この装置に対する操作は,次の二つに限られる。
PUSH x:品物xを1個積み上げる。
POP:一番上の品物を1個取り出す。
PUSH x:品物xを1個積み上げる。
POP:一番上の品物を1個取り出す。

| a,b,c | |
| b,a,c | |
| c,a,b | |
| c,b,a |
『情報処理過去問.com』からiPhoneアプリがリリースされました!!
正解
- ウ
解説
この装置は スタック で、次の性質を持ちます。
・品物は PUSH によって上に積まれる
・品物は POP によって一番上から取り出される
・つまり 後に積んだものほど先に取り出される(LIFO)
品物の到着順は a → b → c と固定されています。
最初に c を取り出すには、
a → b → c の順で PUSH してから POP する必要があります。
PUSH a
PUSH b
PUSH c
POP → c
この時点でスタックの中には、下から a, 上に b が残っています。
次に a を取り出したいところですが、
b が a の上に乗っている状態です。
スタックでは、上にあるものからしか取り出せないため、
POP を行うと必ず b が先に取り出されます。
そのため、
b を飛ばして a を先に取り出すことはできません。
以上の理由から、
c → a → b という順序はスタックの構造上、実現不可能です。
・品物は PUSH によって上に積まれる
・品物は POP によって一番上から取り出される
・つまり 後に積んだものほど先に取り出される(LIFO)
品物の到着順は a → b → c と固定されています。
最初に c を取り出すには、
a → b → c の順で PUSH してから POP する必要があります。
PUSH a
PUSH b
PUSH c
POP → c
この時点でスタックの中には、下から a, 上に b が残っています。
次に a を取り出したいところですが、
b が a の上に乗っている状態です。
スタックでは、上にあるものからしか取り出せないため、
POP を行うと必ず b が先に取り出されます。
そのため、
b を飛ばして a を先に取り出すことはできません。
以上の理由から、
c → a → b という順序はスタックの構造上、実現不可能です。