平成23年度 春期
応用情報技術者試験問題と解答
問7
PUSH命令でスタックにデータを入れ、POP命令でスタック
からデータを取り出す。動作中のプログラムにおいて、ある
状態から次の順で10個の命令を実行したとき、スタックの
中のデータ次のようになった。1番目のPUSH命令でスタックに
入れたデータはどれか。

 PUSH → PUSH → POP → PUSH → PUSH
 → PUSH → PUSH → POP → POP → PUSH

 PUSH───┐ ┌──→POP
        ↓ │ 
       │   │
       ├───┤
       │192│
       ├───┤
       │ 55│
       ├───┤
       │326│
       ├───┤
       │  7│
       ├───┤
       │ 29│
       ├───┤
       │   │

 ア 29  イ 7  ウ 326  エ 55


【正解】 イ

PUSH(a)→ PUSH(b) → POP → PUSH(c) → PUSH(d)
 → PUSH(e) → PUSH(f) → POP → POP → PUSH(g)
として、スタックの状態を考える。
便宜上スタックの状態を、左から順に表記する。

PUSH(a) ・・・ a
PUSH(b) ・・・ b, a
POP   ・・・ a
PUSH(c) ・・・ c, a
PUSH(d) ・・・ d, c, a
PUSH(e) ・・・ e, d, c, a
PUSH(f) ・・・ f, e, d, c, a
POP   ・・・ e, d, c, a
POP   ・・・ d, c, a
PUSH(g) ・・・ g, d, c, a

従って、10個の命令を実行すると、スタックには4つデータが入り、
1番目のPUSH命令でスタックに入れたデータは上から4番目である。

従って、1番目のPUSH命令でスタックに入れたデータは
である。

【別解】
実行した10個の命令を逆に遡ると、以下のとおりとなる。

PUSH ・・・
192, 55, 326, 7, 29 (192が入った)
POP  ・・・
(?)., 55, 326, 7, 29 (何かのデータが取り出された)
POP  ・・・
(□), ., 55, 326, 7, 29 (何かのデータが取り出された)
PUSH ・・・ , ., 55, 326, 7, 29
PUSH ・・・
, 55, 326, 7, 29
PUSH ・・・
55, 326, 7, 29
PUSH ・・・ 326, 7, 29
POP  ・・・
(△), 7, 29  (何かのデータが取り出された)
PUSH ・・・
, 7, 29
PUSH ・・・
7, 29 (7が入った)

従って、1番目のPUSH命令でスタックに入れたデータはである。

EXCEL VBAのご相談なら ファーストマクロ 



問6 目次 問8
ファーストマクロ TOPページ