技術士 第一次試験 基礎科目 2群 情報・論理 練習問題 第5問: 空のスタックに対して、次の操作を左から順に行う。「x を積む」は値 x をスタックに積む操作、「取り出す」はスタックから値を 1 つ取り出す操作である。 4 を
基礎科目 2群 情報・論理
– / 12 解いた
第5問
空のスタックに対して、次の操作を左から順に行う。「x を積む」は値 x をスタックに積む操作、「取り出す」はスタックから値を 1 つ取り出す操作である。 4 を積む → 9 を積む → 6 を積む → 取り出す → 取り出す → 1 を積む → 8 を積む → 取り出す → 取り出す → 取り出す 取り出される値を、取り出された順に並べたものとして、最も適切なものはどれか。
解答と解説を先に見る
先に見ると、この問題は今回は育ちません。
正解: 4. 6、9、8、1、4
「6、9、8、1、4」が適切です。スタックから取り出せるのは最も新しく積んだ要素だけで、この性質を後入れ先出し(LIFO)といいます(NIST Dictionary of Algorithms and Data Structures「stack」)。
中身を底から順に書いてたどると、次のようになります。
4、9、6 を積む → [4, 9, 6]
2 回取り出す → 6、9 → [4]
1、8 を積む → [4, 1, 8]
3 回取り出す → 8、1、4 → [ ]
よって 6、9、8、1、4 の順です。「4、9、6、1、8」は、最も早く入れた要素から取り出すキュー(先入れ先出し・FIFO)として扱った順です。
「8、1、6、9、4」は、積む操作を全部先に済ませてから、まとめて取り出したときの順です。「6、1、8、9、4」は、1 を積む操作を 2 回目の取り出しより前に行ったと読み違えた順です。
「4、1、8、9、6」は、正しい順を逆に並べたものです。
関連キーワード: スタック・LIFO・キュー・FIFO
模試 (30問)
この問題が解けたら、本試験はどうですか?本番形式で、ほかの科目もまとめて確かめる
本番形式の模擬試験で実力チェックPremium (月980円)Premium (ご利用中)制限時間 2時間
広告