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

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


เมื่อจำเป็นต้องใช้คิวโดยใช้สแต็ก คลาสคิวสามารถกำหนดได้ โดยสามารถกำหนดอินสแตนซ์สแต็กสองอันได้ การดำเนินการต่างๆ สามารถทำได้ในคิวที่กำหนดเป็นเมธอดในคลาสนี้

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

ตัวอย่าง

class Queue_structure:
   def __init__(self):
      self.in_val = Stack_structure()
      self.out_val = Stack_structure()

   def check_empty(self):
      return (self.in_val.check_empty() and self.out_val.check_empty())

   def enqueue_operation(self, data):
      self.in_val.push_operation(data)

   def dequeue_operation(self):
      if self.out_val.check_empty():
         while not self.in_val.check_empty():
            deleted_val = self.in_val.pop_operation()
            self.out_val.push_operation(deleted_val)
      return self.out_val.pop_operation()

class Stack_structure:
   def __init__(self):
      self.items = []

   def check_empty(self):
      return self.items == []

   def push_operation(self, data):
      self.items.append(data)

   def pop_operation(self):
      return self.items.pop()

my_instance = Queue_structure()

while True:
   print('enqueue <value>')
   print('dequeue')
   print('quit')
   my_input = input('What operation would you like to perform ?').split()

   operation = my_input[0].strip().lower()
   if operation == 'enqueue':
      my_instance.enqueue_operation(int(my_input[1]))
   elif operation == 'dequeue':
      if my_instance.check_empty():
         print('The queue is empty')
      else:
         deleted_elem = my_instance.dequeue_operation()
         print('The deleted element is : ', int(deleted_elem))
   elif operation == 'quit':
      break

ผลลัพธ์

enqueue <value>
dequeue
quit
What operation would you like to perform ?enqueue 45
enqueue <value>
dequeue
quit
What operation would you like to perform ?enqueue 23
enqueue <value>
dequeue
quit
What operation would you like to perform ?enqueue 78
enqueue <value>
dequeue
quit
What operation would you like to perform ?dequeue
The deleted element is : 45
enqueue <value>
dequeue
quit
What operation would you like to perform ?quit

คำอธิบาย

  • มีการกำหนด 'โครงสร้างคิว' ซึ่งกำหนดสองอินสแตนซ์ของสแต็ก

  • มีเมธอดชื่อ 'check_empty' ที่จะตรวจสอบคิวว่าง

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

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

  • สร้างคลาส "Stack_structure" อีกคลาสแล้ว

  • มันเริ่มต้นรายการว่าง

  • มีเมธอดชื่อ 'check_empty' ซึ่งจะตรวจสอบดูว่าสแต็กว่างเปล่าหรือไม่

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

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

  • อินสแตนซ์ 'Queue_structure' ถูกสร้างขึ้น

  • มีสามตัวเลือกให้เลือก ได้แก่ เข้าคิว ลดคิว และออก

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