C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でのデキューと優先キュー


キューのデータ構造は先入れ先出しのデータ構造であることがわかっています。キューにもいくつかのバリエーションがあります。これらは、デキューと優先キューです。

デキューは基本的に両端キューです。したがって、2つのフロントペアと2つのリアペアがあります。フロントポインタとリアポインタの1つのペアは、キューを左側から説明するために使用され、もう1つは、キューを右側から説明するために使用されます。この構造の両側から要素を挿入または削除できます。ここでは、デキューSTLを使用してその機能を理解するC++コードをいくつか示します。

例(デキュー)

#include <iostream>
#include <deque>
using namespace std;
void dequeElements(deque <int> que) {
   deque <int> :: iterator it;
   for (it = que.begin(); it != que.end(); ++it)
      cout << *it << " ";
   cout <<endl;
}
int main() {
   deque <int> que;
   que.push_back(10);
   que.push_front(20);
   que.push_back(30);
   que.push_front(15);
   cout << "Currently que is holding : ";
   dequeElements(que);
   cout <<"Size of dequeue : " <<que.size() << endl;
   cout << "Element at position 2 : " << que.at(2) << endl;
   cout << "Element at front position : " << que.front() << endl;
   cout << "Element at back position : " << que.back() << endl;
   cout << "Delete from front side : ";
   que.pop_front();
   dequeElements(que);
   cout << "Delete from back side : ";
   que.pop_back();
   dequeElements(que);
}

出力

Currently que is holding : 15 20 10 30
Size of dequeue : 4
Element at position 2 : 10
Element at front position : 15
Element at back position : 30
Delete from front side : 20 10 30
Delete from back side : 20 10

キューのもう1つのバリエーションは、優先キューです。この構造では、キュー内の各要素に独自の優先順位があります。アイテムをキューに挿入するときは、優先度の値を割り当てる必要があります。最初に最も優先度の高い要素を削除します。優先キューを実装する最も簡単な方法の1つは、ヒープデータ構造を使用することです。

優先キューSTLの1つのC++コードを見てみましょう。ここでは、値に基づいて優先度が割り当てられます。したがって、より高い値は最も優先度の高い要素として扱われます。

例(優先キュー)

#include <iostream>
#include <queue>
using namespace std;
void dequeElements(priority_queue <int> que) {
   priority_queue <int> q = que;
   while(!q.empty()){
      cout << q.top() << " ";
      q.pop();
   }
   cout << endl;
}
int main() {
   priority_queue <int> que;
   que.push(10);
   que.push(20);
   que.push(30);
   que.push(5);
   que.push(1);
   cout << "Currently que is holding : ";
   dequeElements(que);
   cout << "Size of queue : " <<que.size() << endl;
   cout << "Element at top position : " << que.top() << endl;
   cout << "Delete from queue : ";
   que.pop();
   dequeElements(que);
   cout << "Delete from queue : ";
   que.pop();
   dequeElements(que);
}

出力

Currently que is holding : 30 20 10 5 1
Size of queue : 5
Element at top position : 30
Delete from queue : 20 10 5 1
Delete from queue : 10 5 1

  1. C ++標準テンプレートライブラリ(STL)の優先キュー

    優先度キューは、優先度に基づいて要素の挿入と削除をサポートする優先度の高い要素のコレクションを格納するための抽象データ型です。つまり、優先度の高い要素はいつでも削除できます。優先度付きキューは、スタック、キュー、リストなどの場所に関して要素を線形に格納しません。優先度付きキューADT(抽象データ型)は、優先度に基づいて要素を格納します。 優先キューは次の機能をサポートします − サイズ() −優先キュー内の要素数を返すため、優先キューのサイズを計算するために使用されます。 Empty() −優先キューが空の場合はtrueを返し、そうでない場合はfalseを返します 挿入(要素) −

  2. C++で二重にリンクされたリストを使用した優先キュー

    データと優先度は整数値として与えられ、タスクは与えられた優先度に従って二重にリンクされたリストを作成し、結果を表示することです。 キューはFIFOデータ構造であり、最初に挿入された要素が最初に削除されます。優先度付きキューは、優先度に応じて要素を挿入または削除できるキューの一種です。キュー、スタック、またはリンクリストのデータ構造を使用して実装できます。優先キューは、次のルールに従って実装されます- 優先度が最も高いデータまたは要素は、優先度が最も低いデータまたは要素の前に実行されます。 2つの要素の優先度が、順番に実行される要素と同じである場合、それらはリストに追加されます。 優先