スタックとキューの動作をトレースする

前回、科目Bに戻り、クイックソート・マージソートの仕組みを整理しました。今回は、同じくデータ構造の基本として、「スタック」と「キュー」を整理します。

目次

スタックとキューとは

スタックとキューは、どちらもデータを一列に並べて管理する仕組みですが、「どの順番でデータを取り出すか」というルールが異なります。

スタック(後入れ先出し)

スタックは、最後に入れたデータを、最初に取り出す、というルールで管理されます。この考え方を「後入れ先出し(LIFO:Last In First Out)」と呼びます。

イメージとしては、積み重ねた本の山に近いものです。新しい本を積むときは一番上に置き、取り出すときも一番上から取っていきます。下のほうにある本を先に取り出すことはできません。

スタックへのデータの追加は「push(プッシュ)」、取り出しは「pop(ポップ)」と呼ばれます。

キュー(先入れ先出し)

キューは、最初に入れたデータを、最初に取り出す、というルールで管理されます。この考え方を「先入れ先出し(FIFO:First In First Out)」と呼びます。

イメージとしては、レジに並ぶ行列に近いものです。先に並んだ人から順番に処理されていき、あとから並んだ人は、自分の前の人がすべて処理されるまで待つことになります。

キューへのデータの追加は「enqueue(エンキュー)」、取り出しは「dequeue(デキュー)」と呼ばれます。

トレースするときの注意点

スタックとキューのトレース問題では、「今、どんな順番でデータが並んでいるか」を、追加・取り出しのたびに書き出すようにしています。

特に間違えやすいのが、スタックとキューを混同してしまうことです。「後入れ先出し」と「先入れ先出し」という言葉だけでは覚えにくいので、自分は「スタックは本の山」「キューはレジの行列」というイメージに置き換えて、混同しないようにしています。

具体例で確認する

例えば、「1、2、3」という順番でデータを追加した場合を考えます。

  • スタックの場合:取り出す順番は「3、2、1」(最後に入れたものが先に出る)
  • キューの場合:取り出す順番は「1、2、3」(最初に入れたものが先に出る)

同じ順番でデータを入れても、取り出す順番がまったく逆になる、という点が、この単元でいちばん間違えやすいポイントだと感じています。

学習してみた感想

スタックとキューは、言葉だけで覚えようとすると混同しやすいのですが、「本の山」と「レジの行列」という身近なイメージに結びつけたことで、迷わず判断できるようになりました。用語を無理に暗記するのではなく、自分の生活の中にある具体例に置き換えることの効果を、改めて実感しています。

次回は、①に戻り、OSの仮想記憶・ページング方式を整理します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次