อย่างที่เราทราบดีว่าโครงสร้างข้อมูลคิวเป็นโครงสร้างข้อมูลแบบเข้าก่อนออกก่อน คิวมีรูปแบบบางอย่างด้วย นี่คือ 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