使用两个队列实现堆栈的 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):

      returnself.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”的方法,用于确定队列的大小。

  • 定义了此“Queue_structure”的两个实例。

  • 给出了四个选项 - 菜单、推送、弹出和退出。

  • 根据用户给定的inut,对栈的元素进行操作。

  • 输出显示在控制台上。

以上是 使用两个队列实现堆栈的 Python 程序 的全部内容, 来源链接: utcz.com/z/343820.html

回到顶部