基本情報技術者平成17年春期 午前問13

問13

PUSH命令でスタックにデータを入れ,POP命令でスタックからデータを取り出す。動作中のプログラムにおいて,ある状態から次の順で10個の命令を実行したとき,スタックの中のデータは図のようになった。1番目のPUSH命令でスタックに入れたデータはどれか。
13.png/image-size:415×226
  • 7
  • 29
  • 55
  • 326
  • [出題歴]
  • 応用情報技術者 H23特別 問7

分類

テクノロジ系 » アルゴリズムとプログラミング » データ構造

正解

解説

実行された10命令を一つずつ戻りながら、最初のPUSH命令までさかのぼっていきます。
実行された命令を遡りたいので、通常の操作とは逆に考えて、PUSH命令の時は、「スタックの一番上のデータを取り除く」、POP命令の時には「スタックの一番上にデータを積む」というようにしていきます。
  1. [PUSH] スタックの一番上にあるデータは「192」なので、これを取り除きます。
  2. [POP] 取り出されたデータ「?」(値が不明)をスタックに積みます。
  3. [POP] 取り出されたデータ「?」をスタックに積みます。
  4. [PUSH] スタックの一番上にあるデータ「?」を取り除きます。
  5. [PUSH] スタックの一番上にあるデータ「?」を取り除きます。
  6. [PUSH] スタックの一番上にあるデータ「55」を取り除きます。
  7. [PUSH] スタックの一番上にあるデータ「326」を取り除きます。
  8. [POP] 取り出されたデータ「?」をスタックに積みます。
  9. [PUSH] スタックの一番上にあるデータ「?」を取り除きます。
  10. これが最初のPUSH命令です。スタックの一番上にあるデータは「7」なので、1番目の命令では「7」がPUSHされていたことがわかります。
最初の命令までさかのぼる過程での、スタック内容の遷移を下図に示しておくので図でも確認してみてください。
13a.png/image-size:367×238
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop