एसटीडी :: स्टैक क्या है?
स्टैक एक डेटा संरचना है जो LIFO (लास्ट इन फर्स्ट आउट) तकनीक पर आधारित है। एसटीडी :: स्टैक तत्वों को केवल एक छोर से जोड़ा और हटाया जा सकता है।
एसटीडी :: स्टैक क्लास एक कंटेनर एडेप्टर है। कंटेनर ऑब्जेक्ट एक समान डेटा प्रकार का डेटा रखते हैं। आप विभिन्न अनुक्रम कंटेनरों से एक स्टैक बना सकते हैं। यदि कोई कंटेनर प्रदान नहीं किया जाता है, तो डिफ़ॉल्ट रूप से deque प्रतियोगिता का उपयोग किया जाएगा। कंटेनर एडेप्टर पुनरावृत्तियों का समर्थन नहीं करते हैं, इसलिए इसका उपयोग डेटा में हेरफेर करने के लिए नहीं किया जा सकता है।
इस C ++ ट्यूटोरियल में, आप सीखेंगे
- एसटीडी :: स्टैक क्या है?
- स्टैक सिंटैक्स
- सदस्य प्रकार
- स्टैक में संचालन
- ढेर कार्यान्वयन
- धक्का () और पॉप ()
- खाली (), आकार (), शीर्ष ()
- emplace () और स्वैप ()
- एसटीएल में ढेर
स्टैक सिंटैक्स
स्टैक बनाने के लिए, हमें अपने कोड में <स्टैक> हेडर फ़ाइल को शामिल करना होगा। हम तब std को परिभाषित करने के लिए इस सिंटैक्स का उपयोग करते हैं :: ढेर
template> class stack;
- प्रकार - std में निहित तत्व का प्रकार है :: स्टैक। यह किसी भी मान्य C ++ प्रकार या यहां तक कि उपयोगकर्ता-परिभाषित प्रकार भी हो सकता है।
- कंटेनर - अंतर्निहित कंटेनर वस्तु का प्रकार है।
सदस्य प्रकार
यहाँ स्टैक सदस्य प्रकार हैं:
- value_type- पहला टेम्पलेट पैरामीटर, T. यह तत्व प्रकारों को दर्शाता है।
- container_type- दूसरा टेम्पलेट पैरामीटर, कंटेनर। यह अंतर्निहित कंटेनर प्रकार को दर्शाता है।
- size_type- अहस्ताक्षरित अभिन्न प्रकार।
स्टैक में संचालन
एक C ++ स्टैक निम्नलिखित बुनियादी कार्यों का समर्थन करता है:
- धक्का - यह स्टैक में किसी आइटम को जोड़ता / धकेलता है।
- पॉप - यह स्टैक से एक आइटम को हटाता / पॉप करता है।
- तिरछी नज़र - स्टैक के शीर्ष आइटम को बिना हटाए लौटाता है।
- isFull - चेक करता है कि क्या स्टैक भरा हुआ है।
- isEmpty - जाँचता है कि क्या एक स्टैक खाली है।
ढेर कार्यान्वयन
चरण 1) हमारे पास शुरू में एक खाली स्टैक है। एक खाली स्टैक का शीर्ष -1 पर सेट है।
चरण 2) अगला, हमने स्टैक में तत्व 5 को धकेल दिया है। स्टैक के शीर्ष तत्व 5 को इंगित करेगा।
चरण 3) अगला, हमने स्टैक में तत्व 50 को धकेल दिया है। स्टैक के शीर्ष भाग और तत्व 50 को इंगित करता है।
चरण 4) हमने तब एक पॉप ऑपरेशन किया है, स्टैक से शीर्ष तत्व को हटाते हुए। तत्व 50 को स्टैक से पॉप किया गया है। स्टैक का शीर्ष अब तत्व 5 को इंगित करता है।
धक्का () और पॉप ()
स्टैक :: पुश () फ़ंक्शन स्टैक के शीर्ष पर नया आइटम जोड़ता है। सम्मिलन के बाद स्टैक का आकार 1 से बढ़ जाता है। फ़ंक्शन इस सिंटैक्स लेता है:
stack.push(value)
मान स्टैक में सम्मिलित करने के लिए आइटम है।
स्टैक :: पॉप () फ़ंक्शन स्टैक के शीर्ष तत्व को हटा देता है। यह स्टैक का सबसे नया आइटम है। हटाने के बाद स्टैक का आकार 1 से कम हो जाता है। यहाँ फ़ंक्शन सिंटैक्स है:
stack.pop()
फ़ंक्शन कोई पैरामीटर नहीं लेता है।
उदाहरण 1:
#include#include using namespace std;int main() {stack 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();}}
आउटपुट:
यहाँ कोड का एक स्क्रीनशॉट है:
कोड स्पष्टीकरण:
- अपने कार्यों का उपयोग करने के लिए हमारे कोड में iostream हेडर फ़ाइल शामिल करें।
- अपने कार्यों का उपयोग करने के लिए हमारे कोड में स्टैक हैडर फ़ाइल शामिल करें।
- इसे कॉल किए बिना अपनी कक्षाओं का उपयोग करने के लिए हमारे कोड में std नाम स्थान शामिल करें।
- मुख्य () फ़ंक्शन को कॉल करें। इस फ़ंक्शन के भीतर प्रोग्राम लॉजिक जोड़ा जाना चाहिए।
- पूर्णांक मान संग्रहीत करने के लिए स्टैक बनाएँ।
- स्टैक में मान 10 डालने के लिए पुश () फ़ंक्शन का उपयोग करें।
- स्टैक में मान 20 सम्मिलित करने के लिए पुश () फ़ंक्शन का उपयोग करें।
- स्टैक में मान 30 डालने के लिए पुश () फ़ंक्शन का उपयोग करें।
- स्टैक में मान 40 डालने के लिए पुश () फ़ंक्शन का उपयोग करें।
- स्टैक से शीर्ष तत्व को हटाने के लिए पॉप () फ़ंक्शन का उपयोग करें, अर्थात, 40। शीर्ष तत्व अब 30 हो जाता है।
- स्टैक से शीर्ष तत्व को हटाने के लिए पॉप () फ़ंक्शन का उपयोग करें, अर्थात 30। शीर्ष तत्व अब 20 हो जाता है।
- स्टैक खाली नहीं है या नहीं यह जांचने के लिए थोड़ी देर लूप और खाली () फ़ंक्शन का उपयोग करें। ! संचालक नहीं है।
- कंसोल पर स्टैक की वर्तमान सामग्री को मुद्रित करना।
- स्टैक पर पॉप () फ़ंक्शन को कॉल करें।
- जबकि लूप के शरीर का अंत।
- मुख्य () फ़ंक्शन बॉडी का अंत।
खाली (), आकार (), शीर्ष ()
स्टैक में इनबिल्ट फ़ंक्शंस होते हैं जिनका उपयोग आप स्टैक और उसके मूल्यों के साथ खेलने के लिए कर सकते हैं। इसमे शामिल है:
- खाली () - चेक करता है कि स्टैक खाली है या नहीं।
- आकार () - स्टैक का आकार देता है, अर्थात एक स्टैक में तत्वों की संख्या।
- शीर्ष () - शीर्ष पर स्टैक तत्व को एक्सेस करता है।
उदाहरण 2:
#include#include using namespace std;void createStack(stack mystack){stack ms = mystack;while (!ms.empty()){cout << '\t' << ms.top();ms.pop();}cout << '\n';}int main(){stack 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;}
आउटपुट:
यहाँ कोड का एक स्क्रीनशॉट है:
कोड स्पष्टीकरण:
- अपने कार्यों का उपयोग करने के लिए हमारे कोड में iostream हेडर फ़ाइल शामिल करें।
- अपने कार्यों का उपयोग करने के लिए हमारे कोड में स्टैक हैडर फ़ाइल शामिल करें।
- बिना बुलाए अपनी कक्षाओं का उपयोग करने के लिए हमारे प्रोग्राम में std नाम स्थान शामिल करें।
- स्टैक क्रिएटस्टैक बनाएं जिसे हम स्टैक मिस्टैक बनाने के लिए उपयोग कर सकते हैं। स्टैक पूर्णांक का एक सेट रखेगा।
- CreateStack फ़ंक्शन के शरीर की शुरुआत।
- मिस्टैक डेटाटाइप का एक उदाहरण बनाएं और इसे नाम दें एमएस।
- स्टैक खाली है या नहीं, यह देखने के लिए लूप और खाली () फ़ंक्शन का उपयोग करें।
- जबकि लूप के शरीर की शुरुआत।
- स्टैक के शीर्ष पर संग्रहीत शीर्ष () फ़ंक्शन का उपयोग करें। \ T वर्ण एक नया टैब बनाएगा।
- स्टैक के शीर्ष पर तत्व को हटाने के लिए पॉप () फ़ंक्शन का उपयोग करें।
- जबकि लूप के शरीर का अंत।
- कंसोल पर एक रिक्त रेखा प्रिंट करें।
- CreateStack फ़ंक्शन के शरीर का अंत।
- मुख्य () फ़ंक्शन को कॉल करें। कार्यक्रम तर्क को मुख्य () फ़ंक्शन के शरीर के भीतर जोड़ा जाना चाहिए।
- फ़ंक्शन मुख्य के शरीर की शुरुआत ()।
- स्टैक ऑब्जेक्ट सेंट बनाएँ।
- स्टैक में तत्व 32 को सम्मिलित करने के लिए पुश () फ़ंक्शन का उपयोग करें।
- स्टैक में तत्व 21 को सम्मिलित करने के लिए पुश () फ़ंक्शन का उपयोग करें।
- स्टैक में तत्व 39 डालने के लिए पुश () फ़ंक्शन का उपयोग करें।
- स्टैक में तत्व 89 डालने के लिए पुश () फ़ंक्शन का उपयोग करें।
- स्टैक में तत्व 25 को सम्मिलित करने के लिए पुश () फ़ंक्शन का उपयोग करें।
- कंसोल पर कुछ टेक्स्ट प्रिंट करें।
- स्टैक में उपरोक्त सम्मिलित संचालन को निष्पादित करने के लिए createStack फ़ंक्शन को कॉल करें।
- अन्य पाठ के साथ कंसोल पर स्टैक का आकार प्रिंट करें।
- कंसोल पर स्टैक के शीर्ष पर तत्व प्रिंट करें।
- कंसोल पर कुछ टेक्स्ट प्रिंट करें।
- स्टैक के शीर्ष पर मौजूद तत्व को हटाएं। यह तब ढेर में शेष तत्वों को वापस कर देगा।
- उपरोक्त कार्यों को निष्पादित करने के लिए createStack फ़ंक्शन को कॉल करें।
- कार्यक्रम सफल होने पर मूल्य वापस करना चाहिए।
- फ़ंक्शन मुख्य के शरीर का अंत ()।
emplace () और स्वैप ()
ये अन्य इनबिल्ट स्टैक फ़ंक्शन हैं:
- emplace () - फिर स्टैक के शीर्ष पर नए तत्व को सम्मिलित करता है।
- स्वैप () - दूसरे स्टैक की सामग्री के साथ स्टैक सामग्री का आदान-प्रदान करता है।
उदाहरण 3:
#include#include #include using namespace std;int main() {stack st1;stack 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();}}
आउटपुट:
यहाँ कोड का एक स्क्रीनशॉट है:
कोड स्पष्टीकरण:
- अपने कार्यों का उपयोग करने के लिए हमारे कोड में iostream हेडर फ़ाइल शामिल करें।
- अपने कार्यों का उपयोग करने के लिए हमारे कोड में स्टैक हैडर फ़ाइल शामिल करें।
- अपने कार्यों का उपयोग करने के लिए हमारे कोड में cstdlib हेडर फ़ाइल शामिल करें।
- इसे कॉल किए बिना अपनी कक्षाओं का उपयोग करने के लिए हमारे कोड में std नाम स्थान शामिल करें।
- मुख्य () फ़ंक्शन को कॉल करें। इस फ़ंक्शन के शरीर के भीतर प्रोग्राम लॉजिक जोड़ा जाएगा।
- पूर्णांक मानों को संग्रहीत करने के लिए st1 नामक स्टैक की घोषणा करें।
- पूर्णांक मानों को संग्रहीत करने के लिए st2 नामक स्टैक की घोषणा करें।
- St1 नामक स्टैक में पूर्णांक 12 डालने के लिए emplace () फ़ंक्शन का उपयोग करें।
- St1 नामक स्टैक में पूर्णांक 19 डालने के लिए emplace () फ़ंक्शन का उपयोग करें।
- St2 नामक स्टैक में पूर्णांक 20 सम्मिलित करने के लिए emplace () फ़ंक्शन का उपयोग करें।
- St2 नामक स्टैक में पूर्णांक 23 सम्मिलित करने के लिए emplace () फ़ंक्शन का उपयोग करें।
- दो स्टैक, st1 और st2 की सामग्री को स्वैप करने के लिए स्वैप () फ़ंक्शन का उपयोग करें। स्टैक st1 की सामग्री को स्टैक st2 में ले जाया जाना चाहिए। स्टैक st2 की सामग्री को स्टैक st1 में ले जाना चाहिए।
- कंसोल पर कुछ टेक्स्ट प्रिंट करें।
- स्टैक st1 खाली नहीं है या नहीं, यह देखने के लिए स्टेटमेंट और खाली () फ़ंक्शन का उपयोग करें।
- कंसोल पर स्टैक st1 की सामग्री मुद्रित करें। कंसोल पर प्रिंट करते समय स्टैक तत्वों के बीच "" स्थान जोड़ता है।
- शीर्ष तत्व को निकालने के लिए स्टैक st1 पर पॉप () फ़ंक्शन निष्पादित करें।
- अंत कथन के शरीर का अंत।
- कंसोल पर कुछ टेक्स्ट प्रिंट करें। एंडल अंतिम पंक्ति के लिए C ++ कीवर्ड है। यह माउस कर्सर को वहां से छपाई शुरू करने के लिए अगली पंक्ति में ले जाता है।
- स्टैक 2 खाली नहीं है या नहीं यह जांचने के लिए स्टेटमेंट और खाली () फ़ंक्शन का उपयोग करें।
- कंसोल पर स्टैक st2 की सामग्री मुद्रित करें। कंसोल पर प्रिंट करते समय स्टैक तत्वों के बीच "" स्थान जोड़ता है।
- शीर्ष तत्व को हटाने के लिए स्टैक st2 पर पॉप () फ़ंक्शन निष्पादित करें।
- अंत कथन के शरीर का अंत।
- मुख्य () फ़ंक्शन के शरीर का अंत।
एसटीएल में ढेर
एसटीएल (स्टैंडर्ड टेम्प्लेट लाइब्रेरी) उन टेम्प्लेट कक्षाओं के साथ आता है जो सामान्य सी ++ डेटा संरचना प्रदान करते हैं। इसलिए, एसटीएल में एक स्टैक भी लागू किया जा सकता है। हम बस अपने कोड में इस लाइब्रेरी को शामिल करते हैं और इसका उपयोग एक स्टैक को परिभाषित करने के लिए करते हैं।
stackst;
उपरोक्त सिंटैक्स डेटा प्रकार T के तत्वों के लिए एक स्टैक घोषित करता है।
उदाहरण 3:
#include#include #include using namespace std;int main() {stack st;st.push(12);st.push(19);st.push(20);cout << st.top();cout << st.size();}
आउटपुट:
यहाँ कोड का एक स्क्रीनशॉट है:
कोड स्पष्टीकरण:
- अपने कार्यों का उपयोग करने के लिए हमारे कोड में iostream हेडर फ़ाइल शामिल करें।
- अपने कार्यों का उपयोग करने के लिए हमारे कोड में स्टैक हैडर फ़ाइल शामिल करें।
- अपने कार्यों का उपयोग करने के लिए हमारे कोड में cstdlib हेडर फ़ाइल शामिल करें।
- इसे कॉल किए बिना अपनी कक्षाओं का उपयोग करने के लिए हमारे कोड में std नाम स्थान शामिल करें।
- मुख्य () फ़ंक्शन को कॉल करें। इस फ़ंक्शन के शरीर के भीतर प्रोग्राम लॉजिक जोड़ा जाना चाहिए।
- पूर्णांक डेटा संग्रहीत करने के लिए स्टैक सेंट की घोषणा करें।
- तत्व 12 को स्टैक में जोड़ें।
- तत्व 19 को स्टैक में जोड़ें।
- तत्व 20 को स्टैक में जोड़ें।
- कंसोल पर स्टैक के शीर्ष पर तत्व प्रिंट करें।
- कंसोल पर स्टैक का आकार प्रिंट करें।
- फ़ंक्शन मुख्य के शरीर का अंत ()।
सारांश:
- स्टैक एक डेटा संरचना है जो LIFO (लास्ट इन फर्स्ट आउट) तकनीक पर आधारित है।
- Std :: stack केवल आइटम को जोड़ने और एक छोर से निकालने की अनुमति देता है।
- एसटीडी :: स्टैक क्लास एक कंटेनर एडेप्टर है, जो समान डेटा प्रकार की वस्तुओं को रखता है।
- विभिन्न अनुक्रम कंटेनरों से एक स्टैक बनाया जा सकता है।
- यदि आप एक कंटेनर प्रदान नहीं करते हैं, तो डिक्की कंटेनर का उपयोग डिफ़ॉल्ट रूप से किया जाएगा।
- स्टैक में आइटम डालने के लिए पुश () फ़ंक्शन है।
- पॉप () फ़ंक्शन चरण से शीर्ष आइटम को हटाने के लिए है।
- खाली () फ़ंक्शन यह जांचने के लिए है कि स्टैक खाली है या नहीं।