जब एकल कतार का उपयोग करके स्टैक लागू करने की आवश्यकता होती है, तो एक 'Stack_structure' क्लास की आवश्यकता होती है साथ में एक Queue_structure क्लास। इन क्लास में स्टैक और कतार से मान जोड़ने और हटाने के लिए संबंधित विधियाँ परिभाषित की जाती हैं।
उदाहरण
class Stack_structure:
def __init__(self):
self.q = Queue_structure()
def check_empty(self):
return self.q.check_empty()
def push_val(self, data):
self.q.enqueue_operation(data)
def pop_val(self):
for _ in range(self.q.size_calculate() - 1):
dequeued = self.q.dequeue_operation()
self.q.enqueue_operation(dequeued)
return self.q.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('मेनू')
print('push ')
print('pop')
print('quit')
while True:
my_input = input('आप कौन सा ऑपरेशन करना चाहेंगे? ').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('स्टैक खाली है।')
else:
print('हटाया गया मान है:', my_instance.pop_val())
elif operation == 'quit':
break
आउटपुट
मेनू pushpop quit आप कौन सा ऑपरेशन करना चाहेंगे? push 89 आप कौन सा ऑपरेशन करना चाहेंगे? push 43 आप कौन सा ऑपरेशन करना चाहेंगे? push 76 आप कौन सा ऑपरेशन करना चाहेंगे? push 56 आप कौन सा ऑपरेशन करना चाहेंगे? pop हटाया गया मान है: 56 आप कौन सा ऑपरेशन करना चाहेंगे? quit
व्याख्या
एक 'Stack_structure' क्लास बनाई गई है जो एक खाली सूची इनिशियलाइज़ करती है।
स्टैक खाली है या नहीं यह देखने के लिए 'check_empty' विधि परिभाषित की गई है।
'push_val' नामक एक अन्य विधि परिभाषित की गई है जो स्टैक में तत्व जोड़ती है।
'pop_val' नामक एक अन्य विधि परिभाषित की गई है जो स्टैक से तत्व हटाती है।
एक 'Queue_structure' क्लास बनाई गई है जो एक खाली सूची इनिशियलाइज़ करती है और सूची का आकार 0 निर्दिष्ट करती है।
कतार खाली है या नहीं यह देखने के लिए 'check_empty' विधि परिभाषित की गई है।
'enqueue_operation' नामक एक अन्य विधि परिभाषित की गई है जो कतार में तत्व जोड़ती है।
'dequeue_operation' नामक एक अन्य विधि परिभाषित की गई है जो कतार से तत्व हटाती है।
'size_calculate' नामक एक अन्य विधि परिभाषित की गई है, जो कतार का आकार निर्धारित करती है।
इस 'Stack_structure' का एक इंस्टेंस परिभाषित किया गया है।
चार विकल्प दिए गए हैं- मेनू, push, pop, और quit।
उपयोगकर्ता द्वारा दिए गए इनपुट के आधार पर, स्टैक के तत्वों पर ऑपरेशन किए जाते हैं।
आउटपुट कंसोल पर प्रदर्शित किया जाता है।