जैसा कि हम जानते हैं कि क्यू डेटा संरचना फर्स्ट इन फर्स्ट आउट डेटा संरचना है। क्यू के कुछ रूपांतर भी हैं। ये हैं डीक्यू और प्राथमिकता क्यू।
डीक्यू मूल रूप से डबल एंडेड क्यू है। इसलिए फ्रंट और रियर पॉइंटर्स के दो जोड़े हैं। फ्रंट और रियर पॉइंटर्स का एक जोड़ा बाईं ओर से क्यू का वर्णन करने के लिए उपयोग किया जाता है, और दूसरा दाईं ओर से इसका वर्णन करने के लिए उपयोग किया जाता है। हम इस संरचना में दोनों तरफ से तत्व डाल या हटा सकते हैं। यहां हम डीक्यू 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 << "वर्तमान में क्यू धारण कर रहा है: ";
dequeElements(que);
cout << "डीक्यू का आकार: " << que.size() << endl;
cout << "स्थिति 2 पर तत्व: " << que.at(2) << endl;
cout << "सामने की स्थिति पर तत्व: " << que.front() << endl;
cout << "पीछे की स्थिति पर तत्व: " << que.back() << endl;
cout << "सामने की तरफ से हटाएं: ";
que.pop_front();
dequeElements(que);
cout << "पीछे की तरफ से हटाएं: ";
que.pop_back();
dequeElements(que);
}
आउटपुट
वर्तमान में क्यू धारण कर रहा है: 15 20 10 30 डीक्यू का आकार: 4 स्थिति 2 पर तत्व: 10 सामने की स्थिति पर तत्व: 15 पीछे की स्थिति पर तत्व: 30 सामने की तरफ से हटाएं: 20 10 30 पीछे की तरफ से हटाएं: 20 10
क्यू का एक और रूपांतर प्राथमिकता क्यू है। इस संरचना में, क्यू में प्रत्येक तत्व की अपनी प्राथमिकता होती है। जब हम क्यू में आइटम डालते हैं, तो हमें इसके साथ प्राथमिकता मान निर्दिष्ट करना होता है। यह पहले उच्चतम प्राथमिकता वाले तत्व को हटाएगा। प्राथमिकता क्यू को लागू करने के सबसे आसान तरीकों में से एक हीप डेटा संरचना का उपयोग करना है।
आइए प्राथमिकता क्यू STL के लिए एक 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 << "वर्तमान में क्यू धारण कर रहा है: ";
dequeElements(que);
cout << "क्यू का आकार: " << que.size() << endl;
cout << "शीर्ष स्थान पर तत्व: " << que.top() << endl;
cout << "क्यू से हटाएं: ";
que.pop();
dequeElements(que);
cout << "क्यू से हटाएं: ";
que.pop();
dequeElements(que);
}
आउटपुट
वर्तमान में क्यू धारण कर रहा है: 30 20 10 5 1 क्यू का आकार: 5 शीर्ष स्थान पर तत्व: 30 क्यू से हटाएं: 20 10 5 1 क्यू से हटाएं: 10 5 1