アルゴリズムとプログラミング
平成30年度 春期 基本情報技術者試験 午前 問5
次の二つのスタック操作を定義する。
PUSH n: スタックにデータ(整数値 n)をプッシュする。
POP: スタックからデータをポップする。
空のスタックに対して,次の順でスタック操作を行った結果はどれか。
PUSH 1 → PUSH 5 → POP → PUSH 7 → PUSH 6 → PUSH 4 → POP → POP → PUSH 3
各選択肢は 3 段のスタックの図。上から下へ: ア 1,7,3 / イ 3,4,6 / ウ 3,7,1 / エ 6,4,3。
- ア [図] スタック(上から)1, 7, 3
- イ [図] スタック(上から)3, 4, 6
- ウ [図] スタック(上から)3, 7, 1
- エ [図] スタック(上から)6, 4, 3
出典:平成30年度 春期 基本情報技術者試験 午前 問5
答えと解説を見る
正解:ウ
覚える知識
スタックのpush/popトレース
スタックは後入れ先出し(LIFO)で、最後にプッシュした要素から取り出される。
この問題で必要なこと
スタックはLIFO。操作を順に追うと、PUSH1,5→POP(5)→PUSH7,6,4→POP(4)→POP(6)→PUSH3 となり、下から1,7,3、上から3,7,1。
ひっかけ
FIFOと混同して先頭から取り出す、図の上下を逆に読む。
この知識の出題:本試験系 5 回・免除試験 4 回(公開問題での観測値)