स्टैक एक रैखिक डेटा संरचना है जो लास्ट इन फर्स्ट आउट . पर काम करती है तंत्र (एलआईएफओ)। स्टैक में सबसे पहले प्रवेश करने वाला तत्व संसाधित होने वाला अंतिम तत्व है।
उदाहरण
स्टैक डेटा संरचना को व्यंजनों के ढेर के उदाहरण की सहायता से समझा जा सकता है।
बर्तन एक के बाद एक ढेर किए जा रहे हैं। पहली प्लेट या डिश ढेर के नीचे होती है और आखिरी डिश ढेर या ढेर के ऊपर रखी जाती है। जब भी हमें प्लेट की आवश्यकता होगी, हम प्लेट को स्टैक के शीर्ष पर उठाएंगे जो कि प्लेट डाली गई है या सबसे अंत में रखी गई है। जो प्लेट पहले रखी गई थी, वह उठाई जाने वाली आखिरी प्लेट होगी। इस प्रकार, लास्ट इन फर्स्ट आउट तंत्र का पालन किया जाता है।
पायथन में स्टैक का कार्यान्वयन
पायथन में स्टैक को अन्य रैखिक डेटा संरचनाओं या पायथन लाइब्रेरी में इन-बिल्ट मॉड्यूल का उपयोग करके विभिन्न तरीकों से लागू किया जा सकता है।
विधि 1 - सूची का उपयोग करके कार्यान्वित करें
पायथन में स्टैक को सूची का उपयोग करके लागू किया जा सकता है। लेकिन, स्टैक को लागू करने के लिए सूची का उपयोग करना अधिक कुशल नहीं है और इसलिए अनुशंसित नहीं है।
ऑपरेशन शामिल
जोड़ें () - यह फ़ंक्शन स्टैक के अंत में एक तत्व जोड़ता है।
पॉप () - यह फ़ंक्शन स्टैक में अंतिम या शीर्ष तत्व को हटाता है और लौटाता है। यह फ़ंक्शन तत्वों को LIFO क्रम में पॉप करता है।
उदाहरण
stack=[]stack.append(1)stack.append(2)stack.append(3)print("Initial Stack", stack)print("Element popped from the stack")print(stack.pop( )) प्रिंट (स्टैक। पॉप ()) प्रिंट ("कुछ तत्वों को पॉप करने के बाद स्टैक", स्टैक)
आउटपुट
Initial Stack [1, 2, 3]तत्व कुछ तत्वों को पॉप करने के बाद stack32Stack से पॉप किया गया [1]
स्टैक खाली होने के बाद आप अधिक तत्वों को नहीं हटा सकते। ऐसा करने से अपवाद होता है।
stack.pop()IndexError:खाली सूची से पॉप करें
विधि 2 - Queue.LifoQueue
. का उपयोग करके कार्यान्वित करेंपाइथन से इनबिल्ट मॉड्यूल का उपयोग करके स्टैक को कार्यान्वित करने का यह तरीका है। हमें कतार से LifoQueue आयात करने की आवश्यकता है। हम LifoQueue को इनिशियलाइज़ कर सकते हैं या कुछ विशिष्ट आकार के साथ स्टैक कर सकते हैं। शून्य के आकार का अर्थ है एक अनंत ढेर।
ऑपरेशन शामिल
अधिकतम आकार − स्टैक में अनुमत तत्वों की अधिकतम संख्या
प्राप्त करें () - स्टैक से अंतिम या शीर्ष तत्व को हटा दें और वापस कर दें। यदि स्टैक खाली है, तब तक प्रतीक्षा करें जब तक कि स्टैक में कम से कम एक तत्व न हो।
get_nowait() - स्टैक से अंतिम तत्व निकालें और वापस करें। यदि स्टैक खाली है, तो अपवाद उठाएं।
डालें(आइटम) - स्टैक के अंत में एक तत्व संलग्न करें। यदि स्टैक भरा हुआ है, तब तक प्रतीक्षा करें जब तक कि एक निःशुल्क स्लॉट उपलब्ध न हो जाए।
put_nowait(आइटम) - स्टैक के अंत में एक तत्व संलग्न करें। यदि स्टैक भरा हुआ है, तो अपवाद उठाएं।
पूर्ण () - यदि स्टैक भरा हुआ है, तो सत्य लौटाता है, अन्यथा असत्य लौटाता है।
खाली () - यदि स्टैक खाली है, तो सही है, अन्यथा गलत है
qsize () - स्टैक में मौजूद तत्वों की संख्या लौटाता है
उदाहरण
कतार आयात से स्टैक से पॉप किया गया") प्रिंट (s.get ()) प्रिंट (s.get ()) प्रिंट ("स्टैक में तत्वों की संख्या", s.qsize ()) प्रिंट ("स्टैक खाली है", s. खाली ( ))
आउटपुट
क्या स्टैक पूर्ण है TrueElement, स्टैक से पॉप किया गया है32स्टैक 1 में तत्वों की संख्या, स्टैक खाली है, गलत है
विधि 3:collections.deque का उपयोग करके कार्यान्वित करें
यह पायथन में स्टैक को लागू करने का एक और तरीका है। हमें संग्रह मॉड्यूल से डेक आयात करने की आवश्यकता है।
इसमें शामिल ऑपरेशन
जोड़ें () - यह फ़ंक्शन स्टैक के अंत में एक तत्व जोड़ता है।
पॉप () - यह फ़ंक्शन O(1) समय जटिलता में स्टैक में अंतिम तत्व को हटाता है और लौटाता है।
उदाहरण
संग्रह से (stack.pop())print(stack.pop())print("कुछ तत्वों को पॉप करने के बाद स्टैक करें:", स्टैक)आउटपुट
प्रारंभिक स्टैक:डेक ([1, 2, 3]) कुछ तत्वों को पॉप करने के बाद स्टैक 32 स्टैक से तत्व पॉप किया गया:डेक ([1])
एक खाली डेक पर पॉप () फ़ंक्शन का उपयोग करने से एक अपवाद उत्पन्न होगा।