Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình Python để triển khai ngăn xếp bằng hai hàng đợi

Khi bắt buộc phải triển khai một ngăn xếp bằng cách sử dụng hai hàng đợi, thì cần có một lớp ‘Cấu trúc ngăn xếp’ cùng với một lớp Cấu trúc hàng đợi. Các phương thức tương ứng được định nghĩa trong các lớp này để thêm và xóa các giá trị khỏi ngăn xếp và hàng đợi tương ứng.

Dưới đây là một minh chứng về điều tương tự -

Ví dụ

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

Đầu ra

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

Giải thích

  • Một lớp ‘Stack_ Structure’ được tạo để khởi tạo một danh sách trống.

  • Phương thức ‘check_empty’ được xác định để xem liệu ngăn xếp có trống không.

  • Một phương thức khác có tên là ‘push_val’ được xác định để thêm các phần tử vào ngăn xếp.

  • Một phương thức khác có tên là ‘pop_val’ được xác định để xóa các phần tử khỏi ngăn xếp.

  • Một lớp ‘Queue_ architects’ được tạo để khởi tạo một danh sách trống và gán kích thước của danh sách là 0.

  • Phương thức ‘check_empty’ được xác định để xem liệu hàng đợi có trống hay không.

  • Một phương thức khác có tên là ‘enqueue_operation’ được định nghĩa để thêm các phần tử vào hàng đợi.

  • Một phương thức khác có tên là ‘dequeue_operation’ được định nghĩa để xóa các phần tử khỏi hàng đợi.

  • Một phương thức khác có tên là ‘size_calculate’ được xác định, xác định kích thước của hàng đợi.

  • Hai trường hợp của ‘Queue_ architecture’ này được xác định.

  • Bốn tùy chọn được đưa ra - Menu, đẩy, bật và thoát.

  • Dựa trên đầu vào do người dùng cung cấp, các hoạt động được thực hiện trên các phần tử của ngăn xếp.

  • Đầu ra được hiển thị trên bảng điều khiển.