समस्या विवरण
मान लीजिए हम क्यू का उपयोग करके एक स्टैक कार्यान्वित करना चाहते हैं। हमें स्टैक के लिए इन विधियों को परिभाषित करना होगा:
- push(x) - स्टैक पर x डालें।
- pop() - स्टैक से शीर्ष तत्व को हटाएं और लौटाएं
- top() - स्टैक से शीर्ष तत्व लौटाएं।
- empty() - लौटाएं कि स्टैक खाली है या नहीं।
उदाहरण
यदि हम फ़ंक्शन push(10), push(20) कॉल करते हैं, फिर pop(), pop() कॉल करते हैं, तो आउटपुट होगा 20, 10
हल करने का दृष्टिकोण
इस समस्या को हल करने के लिए निम्नलिखित चरणों का पालन करें:
- एक डीक्यू q परिभाषित करें
- push() फ़ंक्शन परिभाषित करें, जो x लेता है:
- x को q की शुरुआत में डालें
- pop() फ़ंक्शन परिभाषित करें:
- k := q का पहला तत्व
- q से फ्रंट तत्व हटाएं
- k लौटाएं
- top() फ़ंक्शन परिभाषित करें:
- q का पहला तत्व लौटाएं
- empty() फ़ंक्शन परिभाषित करें:
- यदि q खाली है, तो true लौटाएं
- अन्यथा false लौटाएं
C++ कार्यान्वयन
#include <bits/stdc++.h>
using namespace std;
class MyStack {
private:
deque<int> q;
public:
void push(int x) {
q.push_front(x);
}
int pop() {
int k = q.front();
q.pop_front();
return k;
}
int top() {
return q.front();
}
bool empty() {
if (q.empty())
return true;
else
return false;
}
};
int main() {
MyStack ob;
ob.push(10);
ob.push(20);
cout << (ob.pop()) << endl;
cout << (ob.pop()) << endl;
return 0;
}
इनपुट
push(10),push(20),pop(),pop()
आउटपुट
20 10