目的
基本情報技術者試験などを学習していたら、「キューとスタック」が出てきました。
暗記が苦手な私はいまいちイメージが掴めず困っていたところ、ふと自分の趣味に当てはめてみたらイメージが掴めましたのでそれを共有します。
この記事の目的は、初学者がキューとスタックをイメージでつかめるようになるです。
本題
キュー = シリーズ物のアニメ?
キューを辞書的に説明すると、先入れ先出しです。FIFO(First In, First Out)ともいいますね。
イメージ
皆さんはシリーズ物のアニメなどを貯めてしまったことはないでしょうか。
私はガンダムSEEDを貯めてしまっているので、ここではそれを例に出します。
ガンダムSEEDは
- ガンダムSEED (2002年)
- ガンダムSEED Destiny (2004年)
- ガンダムSEED Freedom (2024年)
の3つを見ればよいです(細かい話は省略)
さて、あなたはいきなりガンダムSEED Freedomから見始めるでしょうか?
多分キラ・ヤマト(主人公)が何をやってる人なのかわからないので、ガンダムSEEDから見始めることでしょう。
1 ガンダムSEED (2002年)
2 ガンダムSEED Destiny (2004年)
3 ガンダムSEED Freedom (2024年)
の順ですね。
2002年に入れたもの、2004年に入れたもの、2024年に入れたもの、を古いものから順に取り出しています。
これがキューのイメージです。
スタック = 積みプラ?
スタックを辞書的に説明すると、後入れ先出しです。LIFO(Last In First Out)ともいいますね。
イメージ
皆さんは積みプラしてますよね?!(してる前提で語りかける)
私はこの前再販のダンボール戦機のプラモデルを買いました!
積みプラを例にスタックを説明します。以下は私の積みプラの一部と買った年です。
- ウィングガンダムEW (2022年)
- ガンダムエアリアル (2023年)
- LBXペルセウス (2024年)
私はウィングガンダムを最初に買いましたが、作らずに積み、また新しいプラモデルを買いました。
どんどん積んで今日まで至りますが、流石に作らなければなりません。
しかし、下から引っ張り出すのも大変なので、最近買って気分が乗っているLBXペルセウスから作り始めることにしました。
次はガンダムエアリアルを作り、最後に一番古いウィングガンダムEWを作ります。
1 LBXペルセウス (2024年)
2 ガンダムエアリアル (2023年)
3 ウィングガンダムEW (2022年)
の順です。
先に買ったプラモデルほど後に作っていますね。
これがスタックのイメージです。
基本情報技術者試験に向けて
さて、先程の説明でイメージが掴めたでしょうか。この節では基本情報技術者試験に出てくる用語と場面にさらっと触れます。
キュー
キューは「格納順にデータを取り出すことができるもの」です。
キューにデータをいれることを「エンキュー」
キューからデータを取り出すことを「デキュー」
といいます。
実際に使われる場面
- プリンターの印刷ジョブ
- CPUのタスクスケジューリング
- ネットワーク通信
要は順番待ちですね。
基本情報技術者試験過去問
私が見る限りだと、「キューの説明はどれか」と「キューとスタックを使った処理問題(計算?させる)」くらいでした。
FIFOであることを覚えておけばなんとかなるかなといった感じです。
スタック
スタックは「格納と逆順にデータを取り出すことができるもの」です。
スタックにデータをいれることを「プッシュ」
スタックからデータを取り出すことを「ポップ」
といいます。
実際に使われる場面
- 関数の呼び出し
- 割り込み時のデータ退避
- webブラウザの戻ると進む
一言で説明するのは難しいですが、一旦置いておいてすぐに取り出すデータが多いですね。
基本情報技術者試験過去問
スタックはキューと違い、かなりいろいろ出題されてました。スタックという言葉の意味を問うというよりは、実際に考えないとわからない問題が多かったです。
頭の中だけで解くと大変だと思うので、紙に書いて順に解いていってみましょう。
プッシュとポップという言葉を覚えていないと詰みます。
もっと詳しく
もっと詳しく知りたい方は以下の記事を参考にされると良いと思います!
当記事はなんとなくイメージを掴むのが目的なので、理解ができたらより厳密な説明を読むことが今後の学習につながると思います。
まとめ
キューはシリーズ物のアニメ
スタックは積みプラ
というようなイメージを持っていただければ嬉しいです。
拙い文章ですがここまで読んでいただきありがとうございました。
私はこの後プラモデルを作りながらガンダムSEEDを見てこようと思います……