平成30年度 春期 基本情報技術者試験 午前 問5
テクノロジ/アルゴリズム次の二つのスタック操作を定義する。 PUSH n: スタックにデータ(整数値n)をプッシュする。 POP: スタックからデータをポップする。 空のスタックに対して,次の順序でスタック操作を行った結果はどれか。 PUSH 1 → PUSH 5 → POP → PUSH 7 → PUSH 6 → PUSH 4 → POP → POP → PUSH 3

出典:平成30年度 春期 基本情報技術者試験 午前 問5
- アスタック図ア
- イスタック図イ
- ウスタック図ウ
- エスタック図エ
正解:ウ
解説
スタックはLIFO(後入れ先出し)のデータ構造で,PUSHで積んだ最後の値が,次のPOPで最初に取り出されます。操作を順に適用すると,PUSH 1,PUSH 5で(1,5),POPで5が抜けて(1),PUSH 7,PUSH 6,PUSH 4で(1,7,6,4),POP,POPで4と6が抜けて(1,7),最後にPUSH 3で(1,7,3)となります。したがって,最終的なスタックの中身は,下から1,7,3(上が3)です。
選択肢ごとの解説
- ア誤り。下から1,7,3が並んでいますが,図の並び方では上下が逆になっており,実際の一連の操作結果とは一致しません。
- イ誤り。3,4,6という値の組合せは,操作列に一度も現れない値(4と6が同時に残る)であり,POPの回数や対象を取り違えた場合に生じる誤りです。
- ウ正しい。一連の操作の結果,スタックの中身は下から1,7,3となり,図では上から3,7,1の順に示されているものが該当します。
- エ誤り。6,4,3という組合せは,本来POPで取り除かれるはずの6と4が残ってしまっており,POP操作を適用し忘れた場合に生じる誤りです。