C++ 中的雙端佇列和優先順序佇列
眾所周知,佇列資料結構是先入先出資料結構。佇列還有一些變體。它們是雙端佇列和優先順序佇列。
雙端佇列基本上是雙端佇列。因此,有兩個 front(前)和 two rear(後)對。一對 front(前)和 rear(後)指標用於從左側描述佇列,而另一對用於從右側描述佇列。在此結構中,我們可以從兩側插入或刪除元素。這裡我們將看到一些使用雙端佇列 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
佇列的另一個變體是優先順序佇列。在此結構中,佇列中的每個元素都有自己的優先順序。將專案插入佇列時,我們必須為此分配優先順序值。它將首先刪除優先順序最高的元素。實現優先順序佇列最簡單的方法之一是使用堆資料結構。
讓我們看一個 C++ 程式碼用於優先順序的佇列 STL。此處優先順序根據值來分配。因此更高的值將被視為最高優先順序的元素。
示例(優先順序佇列)
#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
廣告