जब दो कतारों का उपयोग करके एक स्टैक को लागू करने की आवश्यकता होती है, तो एक 'स्टैक_स्ट्रक्चर' वर्ग के साथ-साथ एक क्यू_स्ट्रक्चर वर्ग की आवश्यकता होती है। इन वर्गों में क्रमशः स्टैक और क्यू से मान जोड़ने और हटाने के लिए संबंधित विधियों को परिभाषित किया गया है।
नीचे उसी का एक प्रदर्शन है -
उदाहरण
class Stack_structure: def __init__(self): self.queue_1 = Queue_structure() self.queue_2 = Queue_structure() def check_empty(self): return self.queue_2.check_empty() def push_val(self, data): self.queue_1.enqueue_operation(data) while not self.queue_2.check_empty(): x = self.queue_2.dequeue_operation() self.queue_1.enqueue_operation(x) self.queue_1, self.queue_2 = self.queue_2, self.queue_1 def pop_val(self): return self.queue_2.dequeue_operation() class Queue_structure: def __init__(self): self.items = [] self.size = 0 def check_empty(self): return self.items == [] def enqueue_operation(self, data): self.size += 1 self.items.append(data) def dequeue_operation(self): self.size -= 1 return self.items.pop(0) def size_calculate(self): return self.size my_instance = Stack_structure() print('Menu') print('push <value>') print('pop') print('quit') while True: my_input = input('What operation would you like to perform ? ').split() operation = my_input[0].strip().lower() if operation == 'push': my_instance.push_val(int(my_input[1])) elif operation == 'pop': if my_instance.check_empty(): print('Stack is empty.') else: print('The deleted value is: ', my_instance.pop_val()) elif operation == 'quit': break
आउटपुट
Menu push <value> pop quit What operation would you like to perform ? push 56 What operation would you like to perform ? push 34 What operation would you like to perform ? push 78 What operation would you like to perform ? push 90 What operation would you like to perform ? pop The deleted value is: 90 What operation would you like to perform ? quit
स्पष्टीकरण
-
एक 'स्टैक_स्ट्रक्चर' क्लास बनाई जाती है जो एक खाली सूची को इनिशियलाइज़ करती है।
-
स्टैक खाली है या नहीं यह देखने के लिए एक 'check_empty' विधि परिभाषित की गई है।
-
'पुश_वल' नामक एक अन्य विधि को परिभाषित किया गया है जो तत्वों को स्टैक में जोड़ता है।
-
'pop_val' नामक एक अन्य विधि को परिभाषित किया गया है जो स्टैक से तत्वों को हटाता है।
-
एक 'Queue_structure' वर्ग बनाया जाता है जो एक खाली सूची को प्रारंभ करता है और सूची का आकार 0 के रूप में निर्दिष्ट करता है।
-
कतार खाली है या नहीं यह देखने के लिए एक 'check_empty' विधि परिभाषित की गई है।
-
'एनक्यू_ऑपरेशन' नामक एक अन्य विधि को परिभाषित किया गया है जो क्यू में तत्वों को जोड़ता है।
-
'डेक्यू_ऑपरेशन' नामक एक अन्य विधि को परिभाषित किया गया है जो क्यू से तत्वों को हटाता है।
-
'size_calculate' नाम की एक अन्य विधि परिभाषित की गई है, जो कतार के आकार को निर्धारित करती है।
-
इस 'क्यू_स्ट्रक्चर' के दो उदाहरण परिभाषित हैं।
-
चार विकल्प दिए गए हैं- मेन्यू, पुश, पॉप और क्विट।
-
उपयोगकर्ता द्वारा दिए गए इनपुट के आधार पर, स्टैक के तत्वों पर संचालन किया जाता है।
-
आउटपुट कंसोल पर प्रदर्शित होता है।