まず、見ていきます スタックとは何ですか そして キューとは何ですか 個別に説明してから、スタックとキューの違いについて説明します。
スタックとは何ですか?
データ構造。配列の場合、ランダム アクセスが可能です。つまり、配列のどの要素にもいつでもアクセスできますが、スタックではシーケンシャル アクセスのみが可能です。挿入・削除ルールに従ったコンテナです。それは原則に従っています LIFO (後入れ先出し) 挿入と削除は、として知られる片側から行われます。 上 。スタックでは、同様のデータ型の要素を挿入できます。つまり、異なるデータ型の要素を同じスタックに挿入することはできません。 2 つの操作は LIFO で実行されます。つまり、 押す そして ポップ 手術。
スタック上で実行できる操作は次のとおりです。
スタックでは、 上 最後に挿入された要素を追跡するために使用されるポインターです。スタックを実装するには、スタックのサイズを知る必要があります。スタックのサイズを取得するにはメモリを割り当てる必要があります。スタックを実装するには 2 つの方法があります。
キューとは何ですか?
あ
スタックとキューの類似点。
スタックとキューには次の 2 つの類似点があります。
スタックとキューは両方とも線形データ構造です。つまり、要素は順番に格納され、1 回の実行でアクセスされます。
スタックとキューは両方ともサイズが柔軟であるため、実行時の要件に応じて拡大または縮小できます。
スタックとキューの違い
スタックとキューの違いは次のとおりです。
比較の根拠 | スタック | 列 |
---|---|---|
原理 | これは LIFO (Last In-First Out) の原則に従っており、最後に挿入された要素が最初に削除されることを意味します。 | これは原則 FIFO (先入れ先出し) に従います。これは、最初に追加された要素がリストから削除される最初の要素であることを意味します。 |
構造 | 挿入と削除の両方が行われる端は 1 つだけあり、その端はトップとして知られています。 | これには 2 つの端、つまり前端と後端があります。フロントエンドは削除に使用され、リアエンドは挿入に使用されます。 |
使用されるポインターの数 | これには、トップ ポインターと呼ばれるポインターが 1 つだけ含まれています。最上位ポインタは、最後に挿入された要素、またはスタックの最上位要素のアドレスを保持します。 | これには、前後の 2 つのポインターが含まれています。フロント ポインタは最初の要素のアドレスを保持し、リア ポインタはキュー内の最後の要素のアドレスを保持します。 |
実行された操作 | プッシュとポップという 2 つの操作を実行します。プッシュ操作はリストに要素を挿入し、ポップ操作はリストから要素を削除します。 | 主に、エンキューとデキューという 2 つの操作を実行します。エンキュー操作はキューへの要素の挿入を実行し、デキュー操作はキューからの要素の削除を実行します。 |
空の状態の検査 | top==-1 の場合、スタックが空であることを意味します。 | フロント== -1 またはフロント = リア+1 の場合、キューが空であることを意味します。 |
全身状態の検査 | top== max-1 の場合、この状態はスタックがいっぱいであることを意味します。 | Rear==max-1 の場合、この状態はスタックがいっぱいであることを意味します。 |
バリエーション | 種類はありません。 | 優先キュー、循環キュー、両端キューの 3 種類があります。 |
実装 | より単純な実装があります。 | スタックよりも実装が比較的複雑です。 |
視覚化 | スタックは垂直方向のコレクションとして視覚化されます。 | キューは水平方向のコレクションとして視覚化されます。 |