IPA過去問ドリル

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

テクノロジ/アルゴリズム

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

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

出典:平成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操作を適用し忘れた場合に生じる誤りです。
基本情報技術者の過去問を演習モードで解く