Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में स्टैक समझाया गया उदाहरण सहित

स्टैक एक लीनियर डेटा स्ट्रक्चर है जो लास्ट इन फर्स्ट आउट मैकेनिज्म (LIFO) पर काम करता है। जो एलिमेंट स्टैक में पहले प्रवेश करता है वह अंतिम प्रोसेस होता है।

उदाहरण

स्टैक डेटा स्ट्रक्चर को व्यंजनों के स्टैक के उदाहरण से समझा जा सकता है।

व्यंजनों को एक के ऊपर एक ढेर किया जाता है। पहली प्लेट या डिश ढेर के नीचे होती है और अंतिम रखा गया डिश ढेर या स्टैक के शीर्ष पर होता है। जब भी हमें प्लेट की आवश्यकता होती है, हम स्टैक के शीर्ष पर प्लेट उठाएंगे जो अंतिम में रखी गई प्लेट है। जो प्लेट पहले रखी गई थी वह अंतिम में उठाई जाएगी। इस प्रकार, लास्ट इन फर्स्ट आउट मैकेनिज्म का पालन किया जाता है।

पायथन में स्टैक का कार्यान्वयन

पायथन में स्टैक को अन्य लीनियर डेटा स्ट्रक्चर्स या पायथन लाइब्रेरी में इनबिल्ट मॉड्यूल्स का उपयोग करके विभिन्न तरीकों से इम्प्लीमेंट किया जा सकता है।

मेथड 1 - लिस्ट का उपयोग करके इम्प्लीमेंट करें

पायथन में स्टैक को लिस्ट का उपयोग करके इम्प्लीमेंट किया जा सकता है। लेकिन, स्टैक इम्प्लीमेंट करने के लिए लिस्ट का उपयोग करना बहुत कुशल नहीं है और इसलिए अनुशंसित नहीं है।

शामिल ऑपरेशन्स

append() - यह फंक्शन स्टैक के अंत में एक एलिमेंट जोड़ता है।

pop() - यह फंक्शन स्टैक में अंतिम या शीर्ष एलिमेंट को हटाता है और वापस करता है। यह फंक्शन LIFO ऑर्डर में एलिमेंट्स को पॉप करता है।

उदाहरण

stack = []
stack.append(1)
stack.append(2)
stack.append(3)
print("Initial Stack", stack)
print("Element popped from the stack")
print(stack.pop())
print(stack.pop())
print("Stack after popping some elements", stack)

आउटपुट

Initial Stack [1, 2, 3]
Element popped from the stack
3
2
Stack after popping some elements [1]

एक बार स्टैक खाली हो जाने पर आप अधिक एलिमेंट्स नहीं हटा सकते। ऐसा करने पर एक्सेप्शन होता है।

stack.pop()
IndexError: pop from empty list

मेथड 2 - queue.LifoQueue का उपयोग करके इम्प्लीमेंट करें

यह पायथन से इनबिल्ट मॉड्यूल का उपयोग करके स्टैक इम्प्लीमेंट करने का तरीका है। हमें queue से LifoQueue इम्पोर्ट करने की आवश्यकता है। हम LifoQueue या स्टैक को कुछ विशिष्ट आकार के साथ इनिशियलाइज़ कर सकते हैं। शून्य आकार का अर्थ अनंत स्टैक है।

शामिल ऑपरेशन्स

maxsize - स्टैक में अनुमत एलिमेंट्स की अधिकतम संख्या

get() - स्टैक से अंतिम या शीर्ष एलिमेंट को हटाता है और वापस करता है। यदि स्टैक खाली है, तो तब तक प्रतीक्षा करें जब तक स्टैक में कम से कम एक एलिमेंट न हो।

get_nowait() - स्टैक से अंतिम एलिमेंट को हटाता है और वापस करता है। यदि स्टैक खाली है, तो एक्सेप्शन उठाएं।

put(item) - स्टैक के अंत में एक एलिमेंट जोड़ता है। यदि स्टैक भरा हुआ है, तो तब तक प्रतीक्षा करें जब तक फ्री स्लॉट उपलब्ध न हो।

put_nowait(item) - स्टैक के अंत में एक एलिमेंट जोड़ता है। यदि स्टैक भरा हुआ है, तो एक्सेप्शन उठाएं।

full() - यदि स्टैक भरा हुआ है तो True वापस करता है, अन्यथा False।

empty() - यदि स्टैक खाली है तो True वापस करता है, अन्यथा False।

qsize() - स्टैक में मौजूद एलिमेंट्स की संख्या वापस करता है।

उदाहरण

from queue import LifoQueue

s = LifoQueue(maxsize=3)
s.put(1)
s.put(2)
s.put(3)

print("Is stack full", s.full())
print("Element popped from the stack")
print(s.get())
print(s.get())
print("Number of elements in stack", s.qsize())
print("Is stack empty", s.empty())

आउटपुट

Is stack full True
Element popped from the stack
3
2
Number of elements in stack 1
Is stack empty False

मेथड 3: collections.deque का उपयोग करके इम्प्लीमेंट करें

यह पायथन में स्टैक इम्प्लीमेंट करने का एक और तरीका है। हमें collections मॉड्यूल से deque इम्पोर्ट करने की आवश्यकता है।

शामिल ऑपरेशन्स

append() - यह फंक्शन स्टैक के अंत में एक एलिमेंट जोड़ता है।

pop() - यह फंक्शन O(1) टाइम कॉम्प्लेक्सिटी में स्टैक में अंतिम एलिमेंट को हटाता है और वापस करता है।

उदाहरण

from collections import deque

stack = deque()
stack.append(1)
stack.append(2)
stack.append(3)

print("Initial stack:", stack)
print("Element popped from the stack")
print(stack.pop())
print(stack.pop())
print("Stack after popping some elements:", stack)

आउटपुट

Initial stack: deque([1, 2, 3])
Element popped from the stack
3
2
Stack after popping some elements: deque([1])

खाली deque पर pop() फंक्शन का उपयोग करने पर एक्सेप्शन उठेगा।

  1. जावास्क्रिप्ट रेगुलर एक्सप्रेशन मॉडिफायर्स को उदाहरण सहित समझाएं जावास्क्रिप्ट रेगुलर एक्सप्रेशन मॉडिफायर्स को उदाहरण सहित समझाएं

    परिचय जावास्क्रिप्ट रेगुलर एक्सप्रेशन मॉडिफायर्स (फ्लैग्स) रेगुलर एक्सप्रेशन का वैकल्पिक भाग होते हैं जो केस-इनसेंसिटिव और ग्लोबल सर्च करने की अनुमति देते हैं। मॉडिफायर्स को एक साथ जोड़ा भी जा सकता है। मॉडिफायर्स मॉडिफायरविवरण gग्लोबल मिलान सक्षम करता है - पहले मिलान पर रुकने के बजाय सभी मिलान

  1. जावास्क्रिप्ट में फाइनली स्टेटमेंट को उदाहरण सहित समझाएं जावास्क्रिप्ट में फाइनली स्टेटमेंट को उदाहरण सहित समझाएं

    परिचय finally स्टेटमेंट try और catch ब्लॉक के बाद हमेशा निष्पादित होता है, चाहे एरर हुआ हो या नहीं। यह क्लीनअप ऑपरेशन्स (फ़ाइल बंद करना, कनेक्शन रिलीज़ करना, लोडिंग इंडिकेटर छुपाना) के लिए आदर्श है। उदाहरण निम्न कोड जावास्क्रिप्ट में फाइनली स्टेटमेंट के लिए है: <!DOCTYPE html> <html lang

  1. C में स्ट्रिंग लाइब्रेरी फंक्शन्स और उदाहरण C में स्ट्रिंग लाइब्रेरी फंक्शन्स और उदाहरण

    string.h लाइब्रेरी फंक्शन्स स्ट्रिंग हैंडलिंग के लिए पूर्वनिर्धारित फंक्शन्स string.h में उपलब्ध हैं। प्रमुख फंक्शन्स 1. strlen() - स्ट्रिंग लंबाई स्ट्रिंग में कैरेक्टर्स की संख्या लौटाता है (नल टर्मिनेटर छोड़कर)। int strlen(const char *str); char a[30] = Hello; int l = strlen(a); // 5 2. strcpy(