ढेर में C++ उदाहरण के साथ एस.टी.एल.
⚡ स्मार्ट सारांश
ढेर में C++ STL एक LIFO कंटेनर एडाप्टर को लागू करता है जो एक ही छोर से तत्वों को जोड़ता और हटाता है, रैप करता हैping क्रमबद्ध डेटा को प्रबंधित करने के लिए डेक, वेक्टर या सूची जैसे अंतर्निहित अनुक्रम कंटेनर।

std::stack क्या है?
स्टैक एक डेटा संरचना है जो LIFO (लास्ट इन फर्स्ट आउट) तकनीक के आधार पर संचालित होती है। std::stack तत्वों को केवल एक छोर से जोड़ने और हटाने की अनुमति देता है।
std::stack क्लास एक कंटेनर एडॉप्टर है। कंटेनर ऑब्जेक्ट समान डेटा प्रकार का डेटा रखते हैं। आप विभिन्न अनुक्रम कंटेनरों से स्टैक बना सकते हैं। यदि कोई कंटेनर प्रदान नहीं किया जाता है, तो डिफ़ॉल्ट रूप से डेक्यू कंटेनर का उपयोग किया जाएगा। कंटेनर एडॉप्टर इटरेटर का समर्थन नहीं करते हैं, इसलिए इनका उपयोग डेटा में हेरफेर करने के लिए नहीं किया जा सकता है।
स्टैक सिंटैक्स
स्टैक बनाने के लिए, हमें निम्न को शामिल करना होगा हमारे कोड में हेडर फ़ाइल। फिर हम std::stack को परिभाषित करने के लिए इस सिंटैक्स का उपयोग करते हैं:
template <class Type, class Container = deque<Type> > class stack;
- प्रकार - std::stack में मौजूद तत्व का प्रकार है। यह कोई भी मान्य हो सकता है C++ प्रकार या यहां तक कि एक उपयोगकर्ता-परिभाषित प्रकार।
- कंटेनर - अंतर्निहित कंटेनर ऑब्जेक्ट का प्रकार है।
सदस्य प्रकार
स्टैक सदस्य प्रकार इस प्रकार हैं:
- मान प्रकार– पहला टेम्पलेट पैरामीटर, T. यह तत्व प्रकारों को दर्शाता है।
- कंटेनर_प्रकार– दूसरा टेम्पलेट पैरामीटर, कंटेनर। यह अंतर्निहित कंटेनर प्रकार को दर्शाता है।
- आकार_प्रकार– अहस्ताक्षरित पूर्णांक प्रकार।
Operaस्टैक में
A C++ स्टैक निम्नलिखित बुनियादी कार्यों का समर्थन करता है:
- धक्का – यह स्टैक में एक आइटम जोड़ता/डालता है।
- पॉप – यह स्टैक से एक आइटम हटाता है/पॉप करता है।
- झांकना – स्टैक से आइटम हटाए बिना, स्टैक के सबसे ऊपर वाले आइटम को लौटाता है।
- पूर्ण है – यह जांचता है कि स्टैक भरा हुआ है या नहीं।
- खाली है – यह जांचता है कि स्टैक खाली है या नहीं।
स्टैक कार्यान्वयन
निम्नलिखित चरण दर्शाते हैं कि आइटम को स्टैक में डालने और फिर निकालने पर स्टैक का शीर्ष भाग कैसे स्थानांतरित होता है:
चरण 1) प्रारंभ में हमारे पास एक खाली स्टैक होता है। एक खाली स्टैक का शीर्ष मान -1 पर सेट होता है।
चरण 2) इसके बाद, हमने स्टैक में एलिमेंट 5 को पुश कर दिया है। स्टैक का शीर्ष एलिमेंट 5 को इंगित करेगा।
चरण 3) इसके बाद, हमने एलिमेंट 50 को स्टैक में पुश कर दिया है। स्टैक का शीर्ष भाग शिफ्ट हो जाता है और एलिमेंट 50 को इंगित करता है।
चरण 4) हमने पॉप ऑपरेशन किया है, जिससे स्टैक का शीर्ष तत्व हटा दिया गया है। स्टैक से तत्व 50 को पॉप किया गया है। अब स्टैक का शीर्ष तत्व 5 को इंगित करता है।
पुश() और पॉप()
stack::push() फ़ंक्शन स्टैक के शीर्ष पर एक नया आइटम जोड़ता है। आइटम जोड़ने के बाद स्टैक का आकार 1 बढ़ जाता है। इस फ़ंक्शन का सिंटैक्स इस प्रकार है:
stack.push(value)
मान वह आइटम है जिसे स्टैक में डाला जाना है।
stack::pop() फ़ंक्शन स्टैक के सबसे ऊपरी तत्व को हटा देता है। यह स्टैक का सबसे नया आइटम होता है। हटाने के बाद स्टैक का आकार 1 कम हो जाता है। फ़ंक्शन का सिंटैक्स इस प्रकार है:
stack.pop()
फ़ंक्शन कोई पैरामीटर नहीं लेता.
उदाहरण 1:
#include <iostream> #include <stack> using namespace std; int main() { stack<int> st; st.push(10); st.push(20); st.push(30); st.push(40); st.pop(); st.pop(); while (!st.empty()) { cout << ' ' << st.top(); st.pop(); } }
आउटपुट:
कोड का स्क्रीनशॉट यहां दिया गया है:
Code स्पष्टीकरण:
- इसके फ़ंक्शन का उपयोग करने के लिए अपने कोड में iostream हेडर फ़ाइल शामिल करें।
- इसके फ़ंक्शन का उपयोग करने के लिए हमारे कोड में स्टैक हेडर फ़ाइल शामिल करें।
- अपने कोड में std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी क्लासों का उपयोग किया जा सके।
- main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इस फ़ंक्शन के भीतर जोड़ा जाना चाहिए।
- पूर्णांक मानों को संग्रहीत करने के लिए एक स्टैक st बनाएं.
- स्टैक में मान 10 डालने के लिए push() फ़ंक्शन का उपयोग करें।
- स्टैक में मान 20 डालने के लिए push() फ़ंक्शन का उपयोग करें।
- स्टैक में मान 30 डालने के लिए push() फ़ंक्शन का उपयोग करें।
- स्टैक में मान 40 डालने के लिए push() फ़ंक्शन का उपयोग करें।
- स्टैक से शीर्ष तत्व, अर्थात 40 को हटाने के लिए pop() फ़ंक्शन का उपयोग करें। अब शीर्ष तत्व 30 हो जाता है।
- स्टैक से शीर्ष तत्व, अर्थात 30 को हटाने के लिए pop() फ़ंक्शन का उपयोग करें। अब शीर्ष तत्व 20 हो जाता है।
- स्टैक खाली है या नहीं, यह जाँचने के लिए while लूप और empty() फ़ंक्शन का उपयोग करें। ! NOT ऑपरेटर है।
- कंसोल पर स्टैक की वर्तमान सामग्री को प्रिंट करना।
- स्टैक पर pop() फ़ंक्शन को कॉल करें.
- while लूप के मुख्य भाग का अंत.
- main() फ़ंक्शन बॉडी का अंत.
खाली(), आकार(), शीर्ष()
स्टैक में इनबिल्ट फ़ंक्शन होते हैं जिनका उपयोग आप स्टैक और उसके मानों के साथ खेलने के लिए कर सकते हैं। इनमें शामिल हैं:
- खाली()– यह जांचता है कि स्टैक खाली है या नहीं।
- आकार ()– यह स्टैक का आकार लौटाता है, यानी स्टैक में मौजूद तत्वों की संख्या।
- ऊपर()– यह स्टैक के शीर्ष पर स्थित तत्व तक पहुँचता है।
उदाहरण 2:
#include <iostream> #include <stack> using namespace std; void createStack(stack <int> mystack) { stack <int> ms = mystack; while (!ms.empty()) { cout << '\t' << ms.top(); ms.pop(); } cout << '\n'; } int main() { stack <int> st; st.push(32); st.push(21); st.push(39); st.push(89); st.push(25); cout << "The stack st is: "; createStack(st); cout << "\n st.size() : " << st.size(); cout << "\n st.top() : " << st.top(); cout << "\n st.pop() : "; st.pop(); createStack(st); return 0; }
आउटपुट:
कोड का स्क्रीनशॉट यहां दिया गया है:
Code स्पष्टीकरण:
- इसके फ़ंक्शन का उपयोग करने के लिए अपने कोड में iostream हेडर फ़ाइल शामिल करें।
- इसके फ़ंक्शन का उपयोग करने के लिए हमारे कोड में स्टैक हेडर फ़ाइल शामिल करें।
- हमारे प्रोग्राम में std नामस्थान को शामिल करें ताकि हम इसे कॉल किए बिना इसके क्लासों का उपयोग कर सकें।
- createStack फ़ंक्शन बनाएँ जिसका उपयोग हम स्टैक mystack बनाने के लिए कर सकते हैं। स्टैक पूर्णांकों का एक सेट रखेगा।
- createStack फ़ंक्शन के मुख्य भाग का आरंभ.
- mystack डेटाटाइप का एक उदाहरण बनाएं और इसे ms नाम दें।
- स्टैक खाली है या नहीं, यह जांचने के लिए while लूप और empty() फ़ंक्शन का उपयोग करें।
- while लूप के मुख्य भाग का प्रारंभ.
- स्टैक के शीर्ष पर संग्रहीत top() फ़ंक्शन का उपयोग करें। \t वर्ण एक नया टैब बनाएगा।
- स्टैक के शीर्ष पर स्थित तत्व को हटाने के लिए pop() फ़ंक्शन का उपयोग करें।
- while लूप के मुख्य भाग का अंत.
- कंसोल पर एक रिक्त पंक्ति प्रिंट करें.
- createStack फ़ंक्शन के मुख्य भाग का अंत.
- main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को main() फ़ंक्शन के बॉडी में जोड़ा जाना चाहिए।
- फ़ंक्शन main() के मुख्य भाग का प्रारंभ.
- एक स्टैक ऑब्जेक्ट st बनाएँ.
- स्टैक में तत्व 32 को सम्मिलित करने के लिए push() फ़ंक्शन का उपयोग करें।
- स्टैक में तत्व 21 को सम्मिलित करने के लिए push() फ़ंक्शन का उपयोग करें।
- स्टैक में तत्व 39 को सम्मिलित करने के लिए push() फ़ंक्शन का उपयोग करें।
- स्टैक में तत्व 89 को सम्मिलित करने के लिए push() फ़ंक्शन का उपयोग करें।
- स्टैक में तत्व 25 को सम्मिलित करने के लिए push() फ़ंक्शन का उपयोग करें।
- कंसोल पर कुछ पाठ प्रिंट करें.
- स्टैक में उपरोक्त सम्मिलित ऑपरेशन निष्पादित करने के लिए createStack फ़ंक्शन को कॉल करें।
- कंसोल पर अन्य पाठ के साथ स्टैक का आकार प्रिंट करें।
- कंसोल पर स्टैक के शीर्ष पर स्थित तत्व को प्रिंट करें।
- कंसोल पर कुछ पाठ प्रिंट करें.
- स्टैक के शीर्ष पर मौजूद तत्व को हटाएँ। फिर यह स्टैक में बचे हुए तत्वों को वापस कर देगा।
- उपरोक्त कार्यों को निष्पादित करने के लिए createStack फ़ंक्शन को कॉल करें।
- प्रोग्राम को सफलतापूर्वक पूरा होने पर मान लौटाना होगा।
- फ़ंक्शन main() के मुख्य भाग का अंत.
एम्प्लेस() और स्वैप()
ये अन्य इनबिल्ट स्टैक फ़ंक्शन हैं:
- स्थान()– इसके बाद यह स्टैक के शीर्ष पर एक नया तत्व सम्मिलित करता है।
- बदलना()– यह स्टैक की सामग्री को दूसरे स्टैक की सामग्री से बदल देता है।
उदाहरण 3:
#include <iostream> #include <stack> #include <cstdlib> using namespace std; int main() { stack<int> st1; stack<int> st2; st1.emplace(12); st1.emplace(19); st2.emplace(20); st2.emplace(23); st1.swap(st2); cout << "st1 = "; while (!st1.empty()) { cout << st1.top() << " "; st1.pop(); } cout << endl << "st2 = "; while (!st2.empty()) { cout << st2.top() << " "; st2.pop(); } }
आउटपुट:
कोड का स्क्रीनशॉट यहां दिया गया है:
Code स्पष्टीकरण:
- इसके फ़ंक्शन का उपयोग करने के लिए अपने कोड में iostream हेडर फ़ाइल शामिल करें।
- इसके फ़ंक्शन का उपयोग करने के लिए हमारे कोड में स्टैक हेडर फ़ाइल शामिल करें।
- इसके फ़ंक्शन का उपयोग करने के लिए अपने कोड में cstdlib हेडर फ़ाइल शामिल करें।
- अपने कोड में std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी क्लासों का उपयोग किया जा सके।
- main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक इस फ़ंक्शन के मुख्य भाग में जोड़ा जाएगा।
- पूर्णांक मानों को संग्रहीत करने के लिए st1 नामक स्टैक घोषित करें।
- पूर्णांक मानों को संग्रहीत करने के लिए st2 नामक स्टैक घोषित करें।
- st12 नामक स्टैक में पूर्णांक 1 को सम्मिलित करने के लिए emplace() फ़ंक्शन का उपयोग करें।
- st19 नामक स्टैक में पूर्णांक 1 को सम्मिलित करने के लिए emplace() फ़ंक्शन का उपयोग करें।
- st20 नामक स्टैक में पूर्णांक 2 को सम्मिलित करने के लिए emplace() फ़ंक्शन का उपयोग करें।
- st23 नामक स्टैक में पूर्णांक 2 को सम्मिलित करने के लिए emplace() फ़ंक्शन का उपयोग करें।
- दो स्टैक, st1 और st2 की सामग्री को स्वैप करने के लिए स्वैप() फ़ंक्शन का उपयोग करें। स्टैक st1 की सामग्री को स्टैक st2 में ले जाना चाहिए। स्टैक st2 की सामग्री को स्टैक st1 में ले जाना चाहिए।
- कंसोल पर कुछ पाठ प्रिंट करें.
- यह जाँचने के लिए कि स्टैक st1 रिक्त नहीं है, while कथन और empty() फ़ंक्शन का उपयोग करें।
- कंसोल पर स्टैक st1 की सामग्री को प्रिंट करें। कंसोल पर प्रिंट करते समय " " स्टैक तत्वों के बीच स्थान जोड़ता है।
- शीर्ष तत्व को हटाने के लिए स्टैक st1 पर pop() फ़ंक्शन निष्पादित करें।
- while कथन के मुख्य भाग का अंत.
- कंसोल पर कुछ टेक्स्ट प्रिंट करें। endl एक है C++ अंतिम पंक्ति के लिए कीवर्ड। यह माउस कर्सर को अगली पंक्ति पर ले जाता है ताकि वहाँ से मुद्रण शुरू हो सके।
- यह जाँचने के लिए कि स्टैक st2 रिक्त नहीं है, while कथन और empty() फ़ंक्शन का उपयोग करें।
- कंसोल पर स्टैक st2 की सामग्री को प्रिंट करें। कंसोल पर प्रिंट करते समय " " स्टैक तत्वों के बीच स्थान जोड़ता है।
- शीर्ष तत्व को हटाने के लिए स्टैक st2 पर pop() फ़ंक्शन निष्पादित करें।
- while कथन के मुख्य भाग का अंत.
- main() फ़ंक्शन के मुख्य भाग का अंत.
STL में स्टैक
एसटीएल (मानक टेम्पलेट लाइब्रेरी) टेम्पलेट क्लासों के साथ आता है जो सामान्य जानकारी प्रदान करते हैं C++ डेटा संरचनाएँ। इसलिए, स्टैक को STL में भी लागू किया जा सकता है। हम बस इस लाइब्रेरी को अपने कोड में शामिल करते हैं और स्टैक को परिभाषित करने के लिए इसका उपयोग करते हैं।
stack<T> st;
उपरोक्त सिंटैक्स डेटा प्रकार T के तत्वों के लिए स्टैक st घोषित करता है।
उदाहरण 4:
#include <iostream> #include <stack> #include <cstdlib> using namespace std; int main() { stack<int> st; st.push(12); st.push(19); st.push(20); cout << st.top(); cout << st.size(); }
आउटपुट:
कोड का स्क्रीनशॉट यहां दिया गया है:
Code स्पष्टीकरण:
- इसके फ़ंक्शन का उपयोग करने के लिए अपने कोड में iostream हेडर फ़ाइल शामिल करें।
- इसके फ़ंक्शन का उपयोग करने के लिए हमारे कोड में स्टैक हेडर फ़ाइल शामिल करें।
- इसके फ़ंक्शन का उपयोग करने के लिए अपने कोड में cstdlib हेडर फ़ाइल शामिल करें।
- अपने कोड में std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी क्लासों का उपयोग किया जा सके।
- main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इस फ़ंक्शन के मुख्य भाग में जोड़ा जाना चाहिए।
- पूर्णांक डेटा संग्रहीत करने के लिए स्टैक st घोषित करें।
- स्टैक में तत्व 12 जोड़ें.
- स्टैक में तत्व 19 जोड़ें.
- स्टैक में तत्व 20 जोड़ें.
- कंसोल पर स्टैक के शीर्ष पर स्थित तत्व को प्रिंट करें।
- कंसोल पर स्टैक का आकार प्रिंट करें.
- फ़ंक्शन main() के मुख्य भाग का अंत.






