使用两个队列实现栈的Python程序

使用两个队列实现栈的Python程序

当需要使用两个队列实现栈时,需要一个“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

输出

菜单
push <value>
弹
退出
您想执行什么操作?push 56
您想执行什么操作?push 34
您想执行什么操作?push 78
您想执行什么操作?push 90
您要执行什么操作?弹出
删除的值为:90
您想执行什么操作?退出

解释

  • 创建了一个“Stack_structure”类,初始化一个空列表。

  • 定义了一个“check_empty”方法,用于查看栈是否为空。

  • 定义了另一个名为“push_val”的方法,用于向栈中添加元素。

  • 定义了另一个名为“pop_val”的方法,用于从栈中删除元素。

  • 创建了一个“Queue_structure”类,初始化一个空列表,并将列表的大小分配为0。

  • 定义了一个“check_empty”方法,用于查看队列是否为空。

  • 定义了另一个名为“enqueue_operation”的方法,用于向队列中添加元素。

  • 定义了另一个名为“dequeue_operation”的方法,用于从队列中删除元素。

  • 定义了另一个名为“size_calculate”的方法,该方法确定队列的大小。

  • 创建了两个“Queue_structure”的实例。

  • 给出了四个选项 – 菜单,push,pop和quit。

  • 根据用户输入的操作,对栈中元素执行操作。

  • 在控制台上显示输出。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程