2016-07-11 11 views
1

私は最近、問題の1つがスタックは1種類のキューです

"スタックが1つの種類のキューであることを証明する"という割り当てを行っています。

私は既にこのトピックについてのフォーラムや人気のある検索エンジンを検索しました。しかし、私は関連する情報を見つけることができませんでした。 スタックがキューの1種類であるのは本当ですか?もしそうなら、どうですか?

+0

スタックは、「先入れ先出し」キューと考えることができます。しかし、何かを証明するプロンプトは、スタックとキューが厳密に定義されていることを示しています。それは事実ですか? – Codor

+0

いいえ、実際にはステートメントを厳密に定義する必要はありません。キューが受け入れられるので、スタックを示すあらゆる種類の説明が考えられます。 – Hridoy

答えて

4

スタックは、次のようにしてpriority queueをラップすることで実装できます。要素をスタックにプッシュするとき、要素は優先順位キューに既にある要素の数として定義された優先順位を取得します。要素をポップするには、最も優先度の高い要素を取ります。つまり、スタックは優先度キューの特別なケースとみなされます。

1

スタック

スタックは後入れ先出し(LIFO)原理に従って挿入および削除されたオブジェクトのコンテナです。プッシュダウンスタックでは、2つの操作だけが許可されます:pushアイテムをスタックに入れ、popアイテムをスタックから取り出します。スタックは、制限されたアクセスデータ構造です。要素は、スタックの最上部でのみ追加または削除できます。 pushはスタックの一番上にアイテムを追加し、popはアイテムを一番上から削除します。有益な類推は、書籍の束を考えることです。あなたはトップの本だけを取り除くことができます、またあなたはトップに新しい本を加えることができます。

キュー

キューは先入れ先出し(FIFO)の原理に従って挿入および削除されたオブジェクトのコンテナ(線形コレクション)です。待ち行列の優れた例は、UCのフードコートの学生の行です。削除(または表示)が前面に表示される間に、行の新しい追加がキューの背面に追加されました。キューでは、2つの操作だけが許可されますenqueuedequeue。エンキューはキューの後ろに項目を挿入することを意味し、デキューは前の項目を削除することを意味します。

現時点まで: 通常、間にデータ(ノード)を削除または挿入することはできません。この特性は、両方のデータ構造に適用できます。だから私の意見では、これは理由の一つかもしれません。