इस लेख में, हम पायथन 3.x में स्टैक और कतार संरचनाओं के बारे में जानेंगे। या जल्दी। यहां हम इन डेटा संरचनाओं के कामकाज और संशोधन पर चर्चा करेंगे -
इसमें शामिल हैं -
- इंसर्शन ऑपरेशन (पुश, एनक्यू)
- हटाने की कार्रवाई (पॉप, डीक्यू)
- डिस्प्ले / ट्रैवर्सिंग ऑपरेशन
आवश्यकताएं :सूची और सूची संचालन
संबंधित डेटा संरचना :सूची में हेरफेर
संबंधित छवियां
स्टैक
स्टैक में, वस्तुओं को एक दूसरे के ऊपर संग्रहीत किया जाता है, और इन वस्तुओं को आगमन के विपरीत क्रम में हटा दिया जाता है यानी LIFO अवधारणा का पालन किया जाता है। LIFO का अर्थ है स्टैक डेटा संरचना में लास्ट इन फर्स्ट आउट प्रकार की व्यवस्था का पालन किया जाता है।
स्टैक पर संचालन -
- तत्व का जोड़ / जोड़ना:यह जोड़े गए आइटमों की संख्या से स्टैक का आकार बढ़ाता है और जोड़ ऊपरी छोर पर यानी स्टैक के शीर्ष पर होता है।
- तत्व को हटाना / हटाना - इसमें दो शर्तें शामिल हैं - यदि स्टैक खाली है तो हटाने के लिए कोई तत्व उपलब्ध नहीं है यानी स्टैक में अंडरफ्लो होता है या यदि स्टैक में कुछ तत्व मौजूद हैं तो शीर्ष पर मौजूद तत्व हटा दिया जाता है . यह हटाए गए तत्वों की संख्या से स्टैक के आकार को कम कर देता है।
- ट्रैवर्सिंग /डिस्प्लेइंग - इसमें स्टैक के प्रत्येक तत्व का दौरा करना और स्क्रीन पर प्रदर्शित करना शामिल है।
हम झांकने की एक अतिरिक्त कार्यक्षमता भी सम्मिलित कर सकते हैं अर्थात स्टैक के शीर्ष पर मान प्राप्त करना।
स्टैक की विशेषताएं
- सम्मिलन आदेश संरक्षित है।
- स्टैक में दोहराव की अनुमति है।
- समान डेटा-प्रकार संग्रहण।
- पार्सिंग ऑपरेशंस में अत्यधिक उपयोगी।
उदाहरण कोड
def isEmpty(stk): # checks whether the stack is empty or not if stk==[]: return True else: return False def Push(stk,item): # Allow additions to the stack stk.append(item) top=len(stk)-1 def Pop(stk): if isEmpty(stk): # verifies whether the stack is empty or not print("Underflow") else: # Allow deletions from the stack item=stk.pop() if len(stk)==0: top=None else: top=len(stk) print("Popped item is "+str(item)) def Display(stk): if isEmpty(stk): print("Stack is empty") else: top=len(stk)-1 print("Elements in the stack are: ") for i in range(top,-1,-1): print (str(stk[i])) # executable code if __name__ == "__main__": stk=[] top=None Push(stk,1) Push(stk,2) Push(stk,3) Push(stk,4) Pop(stk) Display(stk)
उपरोक्त कोड पायथन 3.x में स्टैक कार्यक्षमता को लागू करता है। या जल्दी। हम एकाधिक if-else कथनों का उपयोग करके उपयोगकर्ता को विकल्प प्रदान करके एक मेनू-संचालित प्रोग्राम बना सकते हैं। स्टैक को फ्रेम करने की अवधारणा दोनों ही मामलों में समान रहती है।
नीचे दिखाया गया स्क्रीन उपरोक्त प्रोग्राम द्वारा उत्पादित आउटपुट को दर्शाता है। हम उपयोगकर्ता-आधारित इनपुट सिस्टम के लिए इनपुट () फ़ंक्शन का भी उपयोग कर सकते हैं (यहां मैंने स्थिर इनपुट लागू किया है)
आउटपुट
Popped item is 4 Elements in the stack are: 3 2 1
कतार
स्टैक में वस्तुओं को एक के बाद एक संग्रहीत किया जाता है, और इन वस्तुओं को आगमन के क्रम में हटा दिया जाता है यानी फीफो अवधारणा का पालन किया जाता है। FIFO का अर्थ है कि कतार डेटा संरचना में फर्स्ट इन फर्स्ट आउट टाइप व्यवस्था का पालन किया जाता है।
एक कतार पर संचालन
-
तत्व का जोड़ / जोड़ना - यह जोड़े गए आइटमों की संख्या से कतार का आकार बढ़ाता है और जोड़ पीछे के छोर पर यानी कतार के पीछे होता है।
-
एलिमेंट को हटाना / हटाना - इसमें दो शर्तें शामिल हैं - यदि कतार खाली है तो हटाने के लिए कोई तत्व उपलब्ध नहीं है यानी कतार में अंडरफ्लो होता है या यदि कतार में कुछ तत्व मौजूद हैं तो सामने मौजूद तत्व हटा दिया जाता है। यह हटाए गए तत्वों की संख्या से स्टैक के आकार को कम कर देता है।
-
ट्रैवर्सिंग/डिस्प्ले करना - इसमें स्टैक के प्रत्येक तत्व का दौरा करना और स्क्रीन पर प्रदर्शित करना शामिल है।
हम झांकने की एक अतिरिक्त कार्यक्षमता भी सम्मिलित कर सकते हैं अर्थात कतार के पीछे/अंत में मान प्राप्त करना।
कतार की विशेषताएं
- सम्मिलन आदेश संरक्षित है।
- कतार में दोहराव की अनुमति है।
- समान डेटा-प्रकार संग्रहण।
- CPU कार्य संचालन को पार्स करने में अत्यधिक उपयोगी।
उदाहरण कोड
#Adding elements to queue at the rear end def enqueue(data): queue.insert(0,data) #Removing the front element from the queue def dequeue(): if len(queue)>0: return queue.pop() return ("Queue Empty!") #To display the elements of the queue def display(): print("Elements on queue are:"); for i in range(len(queue)): print(queue[i]) # executable code if __name__=="__main__": queue=[] enqueue(5) enqueue(6) enqueue(9) enqueue(5) enqueue(3) print("Popped Element is: "+str(dequeue())) display()
उपरोक्त कोड पायथन 3.x में कतार की कार्यक्षमता को लागू करता है। या जल्दी। हम एकाधिक if-else कथनों का उपयोग करके उपयोगकर्ता को विकल्प प्रदान करके एक मेनू-संचालित प्रोग्राम बना सकते हैं। कतार तैयार करने की अवधारणा दोनों ही मामलों में समान रहती है।
नीचे दिखाया गया स्क्रीन उपरोक्त प्रोग्राम द्वारा उत्पादित आउटपुट को दर्शाता है। हम उपयोगकर्ता-आधारित इनपुट सिस्टम के लिए इनपुट () फ़ंक्शन का भी उपयोग कर सकते हैं (यहां मैंने स्थिर इनपुट लागू किया है)
आउटपुट
Popped item is: 5 Elements on queue are: 3 5 9 6
निष्कर्ष
इस लेख में, हमने सीखा कि पायथन 3.x में स्टैक और क्यू डेटा संरचना को कैसे लागू किया जाए। या जल्दी। आप किसी अन्य प्रोग्रामिंग भाषा में स्टैक/क्यू डिटेक्टर प्रोग्राम को लागू करने के लिए समान एल्गोरिदम लागू कर सकते हैं।