令和元年度 秋期 ITパスポート試験 問62
テクノロジ/アルゴリズム下から上へ品物を積み上げて,上にある品物から順に取り出す装置がある。この装置に対する操作は,次の二つに限られる。 PUSH x:品物xを1個積み上げる。 POP: 一番上の品物を1個取り出す。 最初は何も積まれていない状態から開始して,a,b,cの順で三つの品物が到着する。一つの装置だけを使った場合,POP操作で取り出される品物の順番としてあり得ないものはどれか。

出典:令和元年度 秋期 ITパスポート試験 問62
- アa,b,c
- イb,a,c
- ウc,a,b
- エc,b,a
正解:ウ
解説
この装置は「後に入れたものを先に取り出す」スタック(後入れ先出し)です。a,b,cの順に到着するので,PUSHはこの順にしかできません。cを最初に取り出すには,a,b,cを全てPUSHしてからPOPするので,その時点でスタックは下からa,b,cとなり,次に取り出せるのはbで,aより先にbを取り出すしかありません。したがって「c,a,b」の順では取り出せません。
下線の用語は 用語集 で意味を確認できます。
選択肢ごとの解説
- ア誤り。PUSH a→POP→PUSH b→POP→PUSH c→POP とすれば,a,b,c の順に取り出せます。
- イ誤り。PUSH a→PUSH b→POP(b)→POP(a)→PUSH c→POP とすれば,b,a,c の順に取り出せます。
- ウ正しい。cを先に取り出すには,a,b,cが全て積まれており,下からa,b,cの順なので,次に取り出せるのはbです。a が先に出ることはありません。
- エ誤り。PUSH a,b,c と全て積んでから POP を3回行えば,c,b,a の順に取り出せます。