問題
・「PUSH n」スタックに整数データnを挿入する。
・「POP」スタックから整数データを取り出す。
空のスタックに対し、次の操作を行った。
PUSH 1、PUSH 2、PUSH 3、PUSH 4、POP、POP、PUSH 5、POP、POP
このとき、最後に取り出される整数データとして、最も適切なものはどれか。
プログラミングのデータ処理に関する問題です。
問題文より、
・「PUSH n」スタックに整数データnを挿入する。
・「POP」スタックから整数データを取り出す。
と分かります。
一つの容器(スタック)に数字が積まれていき(PUSH)、上から順に取り出していく(POP)ようなイメージを持って下さい。
順を追って解説します。
1.PUSH1,PUSH2,PUSH3,PUSH4にて、容器には数字1234の順で入っています。
[容器イメージ]
|4|
|3|
|2|
|1|
2.2回のPOPで上二つの数字が取り出されます。
| |
| |
|2|
|1|
3.PUSH5にて、5が入ります。
| |
|5|
|2|
|1|
4.二回のPOPで上二つの数字が取り出されます。
| |
| |
| |
|1|
最後に取り出されるのは2となります。
よって、正解は2です。
アルゴリズムに関する問題です。
POPは最も新しいPUSHの整数データを取り出しますので
PUSH1、PUSH2、PUSH3、PUSH4の順番に挿入された時点で
データ「1、2、3、4」の通り並んでいる場合
次にPOPの操作をすると、先に4が取り出され「1、2、3」のデータが残ります。
続いて、POPの操作で1、2
その後PUSH5の操作で1、2、5
その後POPの操作が2回続きますが、最後のPOPの操作で
取り出される整数データは2になります。
したがって、選択肢の2が正解になります。
<正解>2
[解説]
スタックに操作を行った場合に取り出されるデータを答える問題です。
問題文の操作を順に行った場合、以下のようになります。
PUSH 1 → スタックに1が入る
(操作後、一番上にある整数データは1)
PUSH 2 → スタックに2が入る
(操作後、一番上にある整数データは2)
PUSH 3 → スタックに3が入る
(操作後、一番上にある整数データは3)
PUSH 4 → スタックに4が入る
(操作後、一番上にある整数データは4)
POP → スタックから4を取り出す
(操作後、一番上にある整数データは3)
POP → スタックから3を取り出す
(操作後、一番上にある整数データは2)
PUSH 5 → スタックに5が入る
(一番上にある整数データは5)
POP → スタックから5を取り出す
(操作後、一番上にある整数データは2)
POP → スタックから2を取り出す
よって、最後に取り出される整数データは、「2」となり、正解は2となります。