Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python เพื่อใช้งาน Stack โดยใช้สองคิว


เมื่อจำเป็นต้องใช้สแต็กโดยใช้สองคิว คลาส 'Stack_structure' จำเป็นพร้อมกับคลาส Queue_structure มีการกำหนดเมธอดที่เกี่ยวข้องในคลาสเหล่านี้เพื่อเพิ่มและลบค่าจากสแต็กและคิวตามลำดับ

ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน -

ตัวอย่าง

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

คำอธิบาย

  • คลาส 'Stack_structure' ถูกสร้างขึ้นเพื่อเริ่มต้นรายการว่าง

  • วิธีการ 'check_empty' ถูกกำหนดเพื่อดูว่าสแต็กว่างเปล่าหรือไม่

  • มีการกำหนดวิธีการอื่นที่ชื่อว่า 'push_val' ซึ่งเพิ่มองค์ประกอบลงในสแต็ก

  • มีการกำหนดวิธีการอื่นที่ชื่อว่า 'pop_val' เพื่อลบองค์ประกอบออกจากสแต็ก

  • คลาส 'Queue_structure' ถูกสร้างขึ้นเพื่อเริ่มต้นรายการว่างและกำหนดขนาดของรายการเป็น 0

  • วิธีการ 'check_empty' ถูกกำหนดเพื่อดูว่าคิวว่างหรือไม่

  • มีการกำหนดวิธีการอื่นที่ชื่อว่า 'enqueue_operation' ซึ่งเพิ่มองค์ประกอบลงในคิว

  • มีการกำหนดวิธีการอื่นที่ชื่อว่า 'dequeue_operation' ซึ่งจะลบองค์ประกอบออกจากคิว

  • มีการกำหนดวิธีการอื่นที่ชื่อว่า 'size_calculate' ซึ่งกำหนดขนาดของคิว

  • 'โครงสร้างคิว' นี้ถูกกำหนดไว้ 2 อินสแตนซ์

  • มีสี่ตัวเลือกให้เลือก ได้แก่ เมนู กด ป๊อป และออก

  • ขึ้นอยู่กับอินพุตที่กำหนดโดยผู้ใช้ การดำเนินการจะดำเนินการกับองค์ประกอบของสแต็ก

  • เอาต์พุตจะแสดงบนคอนโซล