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

पायथन में स्टैक और क्यू के रूप में सूची का उपयोग करना

इस लेख में, हम पायथन 3.x में स्टैक और कतार संरचनाओं के बारे में जानेंगे। या जल्दी। यहां हम इन डेटा संरचनाओं के कामकाज और संशोधन पर चर्चा करेंगे -

इसमें शामिल हैं -

  1. इंसर्शन ऑपरेशन (पुश, एनक्यू)
  2. हटाने की कार्रवाई (पॉप, डीक्यू)
  3. डिस्प्ले / ट्रैवर्सिंग ऑपरेशन

आवश्यकताएं :सूची और सूची संचालन

संबंधित डेटा संरचना :सूची में हेरफेर

संबंधित छवियां

पायथन में स्टैक और क्यू के रूप में सूची का उपयोग करना

स्टैक

स्टैक में, वस्तुओं को एक दूसरे के ऊपर संग्रहीत किया जाता है, और इन वस्तुओं को आगमन के विपरीत क्रम में हटा दिया जाता है यानी 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 में स्टैक और क्यू डेटा संरचना को कैसे लागू किया जाए। या जल्दी। आप किसी अन्य प्रोग्रामिंग भाषा में स्टैक/क्यू डिटेक्टर प्रोग्राम को लागू करने के लिए समान एल्गोरिदम लागू कर सकते हैं।


  1. पायथन में स्टैक का उपयोग करके दिए गए पोस्टऑर्डर ट्रैवर्सल से एक बीएसटी का निर्माण करें

    मान लीजिए कि हमारे पास बाइनरी सर्च ट्री का एक पोस्टऑर्डर ट्रैवर्सल है; हमें इससे बाइनरी सर्च ट्री ढूंढ़ना होगा। इसलिए, यदि इनपुट [6, 12, 10, 55, 45, 15] जैसा है, तो आउटपुट होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - फ़ंक्शन को हल करें () परिभाषित करें। यह पोस्टऑर्डर लेगा n :=पोस्

  1. वेब स्क्रैपिंग अजगर और स्क्रैपी का उपयोग कर?

    क्रॉलर विकसित करने के लिए सबसे अच्छे ढांचे में से एक स्क्रैपी है। स्क्रैपी एक लोकप्रिय वेब स्क्रैपिंग और क्रॉलिंग फ्रेमवर्क है जो स्क्रैपिंग वेबसाइटों को आसान बनाने के लिए उच्च-स्तरीय कार्यक्षमता का उपयोग करता है। इंस्टॉलेशन खिड़कियों में स्क्रैपी स्थापित करना आसान है:हम या तो पाइप या कोंडा का उपय

  1. मैक पर पायथन 3 का उन्नयन और उपयोग करना

    आप सोच सकते हैं कि आपके बिलकुल नए Mac में सभी प्रासंगिक सॉफ़्टवेयर का नवीनतम संस्करण है। अधिकांश उपयोगकर्ता ऐप्स के लिए, आप सही होंगे, लेकिन अंतर्निहित ढांचे के लिए यह एक अलग कहानी है। नए मैक अभी भी पायथन 2.7.10 के साथ जहाज करते हैं, भले ही सबसे हालिया स्थिर रिलीज पायथन 3.5 है। यदि यह संस्करणों के ब