応用情報技術者試験 2011年度 = 平成23年度・春期 午前 問7

 PUSH命令でスタックにデータを入れ、POP命令でスタックからデータを取り出す。動作中のプログラムにおいて、ある状態から次の順で10個の命令を実行したとき、スタックの中のデータは図のようになった。1番目のPUSH命令でスタックに入れたデータはどれか。


ア 29 イ 7 ウ 326 エ 55

解答



解説

 スタックstack)は、データをLIFOLast-In First-Out)で蓄えます。ちょうど、机の上に重ねた皿のように、最も上に重ねた皿を優先的に取り出すのと同様です。
 データを入れる操作をプッシュpush)、データを取り出す操作をポップpop)といいます。

 本問では、スタックに対してPUSH→PUSH→POP→PUSH→PUSH→PUSH→PUSH→POP→POP→PUSHという10個の操作が行われています。最後にPUSHされたデータが192であることが分かりますので、最初の9個の操作を考えましょう。

  ①PUSH→②PUSH→③POP→④PUSH→⑤PUSH→⑥PUSH→⑦PUSH→⑧POP→⑨POP

 ⑦でPUSHされたデータは⑨でPOPされ、⑥でPUSHされたデータは⑧でPOPされます。⑥と⑦でPUSHされたデータはスタックから取り出されるわけですから、上の9個の操作は、実質的に、以下の5個の操作と同等とみなせます。

  ①PUSH→②PUSH→③POP→④PUSH→⑤PUSH

 ここで、②でPUSHされたデータは③でPOPされ、スタックから取り出されます。したがって、上に示す5個の操作は、実質的に、以下の3個の操作と同等と見なせます。

  ①PUSH→④PUSH→⑤PUSH

 与えられた図と見比べると、⑤は55をPUSHして、④は326をPUSHして、①は7をPUSHすることが分かります。よって、正解はです。


BohYoh.comトップページへ