プログラミングのデータ構造を学んでいると「スタック」や「キュー」という言葉が出てきます。どちらもデータを順番に扱う仕組みですが、その順序の考え方に違いがあります。この記事では、スタック/キューの意味や仕組み、使われる場面を初心者向けにやさしく解説していきます。
スタック/キューとは?
スタックとキューは、どちらもデータを一時的にためておき、順番に取り出すためのデータ構造です。共通しているのは、データを並べて出し入れする点ですが、取り出す順番のルールが異なります。
スタックは、後から入れたデータを先に取り出す仕組みです。積み重ねた本を上から取るようなイメージで、最後に置いたものが最初に取り出されます。
一方キューは、先に入れたデータを先に取り出す仕組みです。お店に並ぶ行列のように、先に並んだ人から順番に処理されていくイメージと考えると分かりやすいでしょう。
スタック/キューが重要な理由
スタックとキューを理解しておくと、データを扱う順番をコントロールしたい場面で適切な仕組みを選べるようになります。順序の管理はプログラムの動きを整えるうえで重要な役割を果たします。
また、これらは多くのプログラムや仕組みの内部で使われている基本的な考え方です。基礎を押さえておくことは、より発展的なデータ構造やアルゴリズムを学ぶ土台にもなるでしょう。
スタック/キューが使われる場面
スタックとキューは、さまざまな処理の中で活用されています。具体例を見てみましょう。
- 操作を元に戻す(取り消す)機能を実現するとき(スタック)
- 関数の呼び出しの順序を管理するとき(スタック)
- 順番待ちの処理を順序通りに行うとき(キュー)
- データを到着した順に処理していくとき(キュー)
スタック/キューの仕組み
スタックとキューがどのようにデータを扱うのか、基本的な流れを順番に見ていきましょう。
- スタックでは、新しいデータを上に積み上げるように追加していきます。
- スタックから取り出すときは、一番上にある最後に追加したデータから取り出します。
- キューでは、新しいデータを列の最後尾に追加していきます。
- キューから取り出すときは、列の先頭にある最初に追加したデータから取り出します。
このように、スタックは「後入れ先出し」、キューは「先入れ先出し」という順序のルールで動いていると考えると分かりやすいでしょう。
スタック/キューと似た用語との違い
スタックとキューの違いは、まさにデータを取り出す順番にあります。整理しておきましょう。
スタックは後から入れたものを先に取り出すため、直近の操作を扱う場面に向いています。たとえば操作の取り消しのように、最後に行ったことから順にさかのぼる処理に適しています。
一方キューは先に入れたものを先に取り出すため、順番を守って公平に処理したい場面に向いています。受け付けた順に処理を進めたいときに適していると言えるでしょう。
スタック/キューを理解するメリット
スタックとキューは、プログラミングの基礎としてさまざまな場面で登場します。仕組みを理解しておくと、どのような利点があるのか見ていきましょう。
スタックとキューを理解すると、データを扱う順序を意識したプログラムの設計がしやすくなります。どちらの仕組みが目的に合っているかを判断できるようになるでしょう。
また、これらは多くの仕組みの基礎になっているため、理解しておくとプログラムの内部の動きをイメージしやすくなり、学習がスムーズに進みやすくなります。
スタック/キューの注意点
便利なスタックとキューですが、使ううえで気をつけておきたいポイントもあります。注意点を確認しておきましょう。
スタックとキューは順序のルールが正反対のため、混同しないように注意が必要です。目的に合わない方を選ぶと、意図した順番で処理ができなくなることがあります。
また、ためられるデータの量には限りがある場合があります。扱う量が多くなる場面では、容量や処理の効率にも気を配ると安心でしょう。
スタック/キューに関連する用語
スタック/キューと合わせて理解しておくと役立つ用語を紹介します。
まとめ
スタックとキューは、どちらもデータを順番にためて取り出すデータ構造ですが、スタックは後入れ先出し、キューは先入れ先出しという違いがあります。
それぞれの順序のルールと向いている場面を理解しておくと、データを扱う処理を考えるときに適切な仕組みを選べるようになるでしょう。
よくある質問
スタックとキューの違いは何ですか?
スタックは後から入れたデータを先に取り出す「後入れ先出し」、キューは先に入れたデータを先に取り出す「先入れ先出し」という違いがあります。取り出す順番のルールが正反対だと考えると分かりやすいでしょう。
スタックはどんな場面で使われますか?
スタックは、操作の取り消し機能や関数の呼び出し順序の管理など、最後に行ったことから順にさかのぼる処理に向いています。直近のデータから扱いたい場面で活用されると言えるでしょう。
キューはどんな場面で使われますか?
キューは、順番待ちの処理を到着した順に行いたい場面で使われます。受け付けた順に公平に処理を進めたいときに向いており、行列のように先に並んだものから処理されるイメージです。

