キューとスタックの操作
空のキューに 1,2,3,4 の順にデータを格納した。次に,キューからデータを一つずつ取り出し,取り出した順に空のスタックへ格納する操作を,キューが空になるまで繰り返した。その後,スタックからデータを 2 回取り出したとき,取り出されるデータの順序はどれか。
- ア1,2
- イ2,1
- ウ3,4
- エ4,3
正解と解説を見る
正解 エ
この問題の基礎知識
- キューは,先に格納したデータから順に取り出す先入れ先出し(FIFO)のデータ構造で,格納をエンキュー,取出しをデキューという。
- スタックは,最後に格納したデータから先に取り出す後入れ先出し(LIFO)のデータ構造で,格納をプッシュ,取出しをポップという。
- データ構造間で積み替える問題では,各操作の後に構造の中身と取出し口(キューの先頭,スタックの最上部)がどうなるかを順に追う。
ア1,2
キューから取り出される順序(1,2)であり,スタックの性質を考慮していない。スタックは後入れ先出し(LIFO)なので,最後に格納したデータから取り出される。
イ2,1
キューから最初に取り出した 1,2 の 2 個だけをスタックに格納して取り出した場合の順序である。実際には 4 個すべてを格納するので,スタックの最上部は 4 となる。
ウ3,4
スタックの上部にある 3,4 を,格納した順に取り出すと誤解した場合の順序である。スタックは後入れ先出し(LIFO)なので,最後に格納した 4 が先に取り出される。
エ4,3正解
キューは先入れ先出し(FIFO)なので 1,2,3,4 の順に取り出され,その順にスタックへ格納される。スタックは後入れ先出し(LIFO)なので,4,3 の順に取り出される。
検証用の出典出典照合済み
IPA 応用情報技術者試験(レベル 3)シラバス照合の根拠(3 件)
- エ(正解): スタックは後入れ先出し(LIFO)なので,最後に格納した 4,次に 3 の順に取り出される(ア・ウの順序は LIFO に反する)
organized as a last-in, first-out stack.
RFC 3031 Multiprotocol Label Switching Architecture · Section 3.9(新しいタブで開きます) - エ(正解): キューは先入れ先出し(FIFO)なので 1,2,3,4 の順に取り出されてスタックに積まれる。全 4 個を積むのでイ(2,1)にはならない
Packet ordering within a queue is preserved, since queues have FIFO ordering.
RFC 8290 The Flow Queue CoDel Packet Scheduler and Active Queue Management Algorithm · Section 1.1(新しいタブで開きます) - 出題範囲の確認
スタックとキューの考え方,その操作を理解する。
IPA 応用情報技術者試験(レベル 3)シラバス Ver.7.2 · 大分類 1 中分類 2 1.(2)③ スタックとキュー(新しいタブで開きます)
検算: キュー出力 1,2,3,4 → スタックに 1,2,3,4 の順に push → pop 2 回で 4,3。