修了試験 2014-01-26実施分 基本情報技術者試験 問5
PUSH命令でスタックにデータを入れ,POP命令でスタックからデータを取り出す。 動作中のプログラムにおいて,ある状態から次の順で10個の命令を実行したとき,スタックの中のデータは図のようになった。 1番目のPUSH命令でスタックに入れたデータはどれか。

正答2
解説
正解は2です。 スタックは後入れ先出し(LIFO:Last In First Out)のデータ構造です。 POPは、その時点で一番上にあるデータ、つまり最後にPUSHしたデータを取り出します。 図では、命令がPUSH、PUSH、POP、PUSH、PUSH、PUSH、PUSH、POP、POP、PUSHの順に並んでいます。 実行後のスタックは、上から192、55、326、7、29です。 PUSHしたデータを順にp1〜p7と呼び、動きをたどります。 1〜2番目のPUSHで、p1、p2が積まれます。 3番目のPOPで、p2が取り出されます。 4〜7番目のPUSHで、p3、p4、p5、p6が積まれます。 8〜9番目のPOPで、p6、p5の順に取り出されます。 10番目のPUSHで、p7が積まれます。 最終的に残るのは、下から元のデータ、p1、p3、p4、p7です。 増えたのは4個なので、上の4個が上からp7=192、p4=55、p3=326、p1=7です。 一番下の29は、命令を実行する前から入っていたデータです。 【選択肢別解説】 1:× 29は上から5番目で、新しく積まれた4個より下にあります。 命令実行前からスタックにあったデータです。 2:○ 1番目のPUSHのデータp1は、取り出されずに残った4個のうち最も下にあります。 上から4番目の7がこれに当たります。 3:× 326は上から3番目で、4番目のPUSH(p3)で入れたデータです。 4:× 55は上から2番目で、5番目のPUSH(p4)で入れたデータです。 【ポイント】 スタックの問題では、各POPがどのPUSHを打ち消すかを対応づけて考えます。 「ある状態から」とあるときは、最初から入っていたデータが下に残っている可能性に注意します。まとめて解く
修了試験 2014-01-26実施分を通しで解く(80問)→