【Day18】スタックとキューは、エレベーターとエスカレーターに例えられる!

投稿者: | 2025年7月25日

データを一時的にためておく**構造(=入れ物のルール)**のことを、データ構造といいます。
その中でも基本でとても重要なのが、**スタック(Stack)キュー(Queue)**です。

🥞 スタック(Stack)とは?

最後に入れたものが、最初に出てくる。
LIFO(Last In, First Out:後入れ先出し)

✅ 例:

お皿を積むようなイメージ。
一番上に置いたお皿を、最初に取り出す。

⛏ 用語:

  • push:スタックにデータを入れる
  • pop:スタックからデータを取り出す

🚶‍♀️ キュー(Queue)とは?

最初に入れたものが、最初に出てくる。
FIFO(First In, First Out:先入れ先出し)

✅ 例:

レジの行列と同じ。
先に並んだ人が、先に呼ばれる。

⛏ 用語:

  • enqueue:キューにデータを入れる
  • dequeue:キューからデータを取り出す

🧠 比較まとめ

特徴スタックキュー
動き方後入れ先出し(LIFO)先入れ先出し(FIFO)
入れる操作pushenqueue
出す操作popdequeue
本の山、お皿のタワーレジの順番、行列

📝 実際の基本情報技術者試験・過去問より(例)

問:スタックに関する記述として、最も適切なものはどれか。
ア:最後に追加したデータを、最初に取り出す
イ:最初に追加したデータを、最後に取り出す
ウ:常に最大の値を先に取り出す
エ:データは順不同に取り出す

正解:


✏️ ミニ問題で確認!

Q1. スタックに A→B→C と順に push したとき、pop で出てくる順は?

→ 答え:C → B → A

Q2. キューに A→B→C と順に enqueue したとき、dequeue で出てくる順は?

→ 答え:A → B → C


ところで、どんな場面で使われるの?


「スタック」や「キュー」は、ただの用語ではなく、実際のプログラムや日常のしくみの中で活躍しているんです。

ここではそれぞれがどんな場面で使われているか、具体例を交えて紹介しますね👇


🥞 スタック(Stack)が使われる場面

① 📄 プログラムの「関数の呼び出し」

  • 関数を呼ぶとき、今の処理を一時的に置いておく必要があります。
  • これは**「呼び出し元の情報をスタックに保存」→「関数の処理が終わったら取り出す」**という流れで処理されます。

💡 たとえば、関数 main()A()B() の順で呼ばれたら
終了するときは B()A()main() の順で戻る。
→ まさに「後に入れたBが最初に出てくる」=スタック


② 🧮 数式の計算(逆ポーランド記法)

  • 通常の数式(1 + 2 × 3)では順番を意識する必要があります。
  • これを逆ポーランド記法(1 2 3 × +)で書くと、スタックを使って計算できます。

③ 🔙 戻るボタン(ブラウザの履歴)

  • Webブラウザで「戻る」を押すと、直前に見ていたページに戻ります。
  • これは「閲覧履歴をスタックにしておく」ことで実現しています。

🚶‍♀️ キュー(Queue)が使われる場面

① 🖨️ プリンタの印刷待ち(スプール)

  • 印刷命令が複数あると、順番に処理されますよね。
  • 最初に送ったデータが、最初に印刷される。→ FIFO(キュー)

② 🧑‍💻 タスク処理(OSのジョブスケジューリング)

  • コンピュータが複数の仕事(ジョブ)を順にこなすとき、キューに追加して順番に処理します。

③ 🎮 ゲームの操作受付

  • プレイヤーが「↑」「→」「Aボタン」など複数操作すると、順番に処理するためにキューを使います。

🔚 まとめ

  • スタック:LIFO → 最後に入れたものが先に出る
  • キュー:FIFO → 最初に入れたものが先に出る
  • 基本情報技術者試験では、用語と特徴を押さえるだけで得点源に!

「やる気が出ないな…」という日も、1単元だけでも進めばOK!