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

पायथन में स्टैक (Stack) लागू करना


जब पायथन का उपयोग करके स्टैक लागू करने की आवश्यकता होती है, तो एक स्टैक क्लास बनाई जाती है, और इस क्लास का एक इंस्टेंस बनाया जाता है। तत्वों को पुश और पॉप करने के लिए मेथड्स परिभाषित किए जाते हैं और इंस्टेंस का उपयोग इन मेथड्स को कॉल करने के लिए किया जाता है।

उदाहरण

class Stack_struct:
    def __init__(self):
        self.items = []

    def check_empty(self):
        return self.items == []

    def add_elements(self, my_data):
        self.items.append(my_data)

    def delete_elements(self):
        return self.items.pop()

my_instance = Stack_struct()
while True:
    print('Push <value>')
    print('Pop')
    print('Quit')
    my_input = input('आप कौन सा ऑपरेशन करना चाहेंगे? ').split()
    my_op = my_input[0].strip().lower()
    if my_op == 'push':
        my_instance.add_elements(int(my_input[1]))
    elif my_op == 'pop':
        if my_instance.check_empty():
            print('स्टैक खाली है')
        else:
            print('हटाया गया मान है: ', my_instance.delete_elements())
    elif my_op == 'quit':
        break

आउटपुट

Push <value>
Pop
Quit
आप कौन सा ऑपरेशन करना चाहेंगे? Push 6
Push <value>
Pop
Quit
आप कौन सा ऑपरेशन करना चाहेंगे? Push 8
Push <value>
Pop
Quit
आप कौन सा ऑपरेशन करना चाहेंगे? Push 34
Push <value>
Pop
Quit
आप कौन सा ऑपरेशन करना चाहेंगे? Pop
हटाया गया मान है: 34
Push <value>
Pop
Quit

व्याख्या

  • आवश्यक विशेषताओं के साथ 'Stack_struct' क्लास बनाई गई है।

  • इसमें एक खाली सूची बनाने के लिए 'init' फ़ंक्शन है।

  • 'check_empty' नामक एक अन्य मेथड जो जांचता है कि सूची खाली है या नहीं।

  • 'add_elements' नामक एक अन्य मेथड खाली सूची में तत्व जोड़ने के लिए परिभाषित की गई है।

  • 'delete_elements' नामक एक मेथड सूची से तत्वों को हटाने के लिए परिभाषित की गई है।

  • 'Stack_struct' क्लास का एक ऑब्जेक्ट बनाया जाता है।

  • उपयोगकर्ता इनपुट लिया जाता है कि कौन सा ऑपरेशन करना है।

  • उपयोगकर्ता की पसंद के आधार पर, ऑपरेशन किया जाता है।

  • प्रासंगिक आउटपुट कंसोल पर प्रदर्शित होता है।

नोट: आउटपुट में टाइपो

मूल आउटपुट में "Psuh" (Push का टाइपो) दिखाया गया है, लेकिन कोड सही ढंग से 'push' को संभालता है।

स्टैक ऑपरेशन सारांश

ऑपरेशनमेथडसमय जटिलताविवरण
Pushappend()O(1) अमॉर्टाइज्डशीर्ष पर तत्व जोड़ता है
Poppop()O(1)शीर्ष तत्व हटाता है और लौटाता है
Peek/Topitems[-1]O(1)बिना हटाए शीर्ष तत्व देखता है
isEmptylen() == 0O(1)जांचता है कि स्टैक खाली है या नहीं
Sizelen()O(1)तत्वों की संख्या लौटाता है

आवेदन

  • अभिव्यक्ति मूल्यांकन (इनफिक्स से पोस्टफिक्स, पोस्टफिक्स मूल्यांकन)

  • बैकट्रैकिंग एल्गोरिदम (भूलभुलैया, N-क्वीन)

  • फंक्शन कॉल प्रबंधन (कॉल स्टैक)

  • अनडू/रिडू कार्यक्षमता

  • ब्रैकेट मिलान और पार्सिंग


  1. पायथन में BST में रेंज में नोड्स की संख्या खोजने का प्रोग्राम पायथन में BST में रेंज में नोड्स की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक BST है, और हमारे पास बाएं और दाएं बाउंड l और r भी हैं, हमें रूट में उन सभी नोड्स की संख्या गिननी है जिनके मान l और r के बीच हैं (सम्मिलित)। उदाहरण के लिए, यदि इनपुट जैसा है: l = 7, r = 13, तो आउटपुट 3 होगा, क्योंकि तीन नोड्स हैं: 8, 10, 12। इसे हल करने के लिए हम निम्न चरणों

  1. - पायथन में strStr() लागू करें

    मान लीजिए हमारे पास दो स्ट्रिंग्स str और sub_str हैं। हमें str में sub_str की पहली घटना ढूंढनी है। यदि स्ट्रिंग str helloworld है, और उपस्ट्रिंग lo है, तो परिणाम 3 होगा। यह C में strstr() फंक्शन का उपयोग करके किया जा सकता है। हमें C में strstr() के समान एक और फंक्शन डिजाइन करना है। हल करने के चरण

  1. - पायथन प्रोग्राम रॉक पेपर कैंची गेम लागू करने के लिए

    पायथन का उपयोग करके हम बहुत दिलचस्प गेम भी विकसित कर सकते हैं। रॉक पेपर कैंची गेम उनमें से एक है। यहाँ हम रैंडम नंबर उत्पन्न करने के लिए randint() फ़ंक्शन का उपयोग करते हैं। इस खेल में खिलाड़ी आमतौर पर तीन तक गिनने की अनुमति देते हैं, या खेल का नाम बोलते हैं, प्रत्येक बार या तो एक हाथ को मुट्ठी में