Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Dequeue และ Priority Queue ใน C ++


อย่างที่เราทราบดีว่าโครงสร้างข้อมูลคิวเป็นโครงสร้างข้อมูลแบบเข้าก่อนออกก่อน คิวมีรูปแบบบางอย่างด้วย นี่คือ Dequeue และ Priority Queue

Dequeue นั้นเป็นคิวที่สิ้นสุดสองครั้ง จึงมีคู่หน้าและคู่หลังสองคู่ ตัวชี้ด้านหน้าและด้านหลังคู่หนึ่งใช้เพื่ออธิบายคิวจากด้านซ้าย และอีกตัวหนึ่งใช้เพื่ออธิบายจากด้านขวา เราสามารถแทรกหรือลบองค์ประกอบจากทั้งสองด้านในโครงสร้างนี้ ที่นี่เราจะเห็นโค้ด C++ บางส่วนที่ใช้ dequeue STL เพื่อทำความเข้าใจการทำงานของมัน

ตัวอย่าง (Dequeue)

#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