用递归反转堆栈的Python程序

用递归反转堆栈的Python程序

当需要使用递归来反转堆栈数据结构时,定义“stack_reverse”方法以及用于添加值、删除值和打印堆栈元素的方法。

下面是演示相同的示例−

例子

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

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

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

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

   def print_it(self):
      for data in reversed(self.items):
         print(data)

def insert_bottom(instance, data):
   if instance.check_empty():
      instance.push_val(data)
   else:
      deleted_elem = instance.pop_val()
      insert_bottom(instance, data)
      instance.push_val(deleted_elem)

def stack_reverse(instance):
   if not instance.check_empty():
      deleted_elem = instance.pop_val()
      stack_reverse(instance)
      insert_bottom(instance, deleted_elem)

my_instance = Stack_structure()
data_list = input('Enter the elements to add to the stack: ').split()
for data in data_list:
   my_instance.push_val(int(data))

print('The reversed stack is:')
my_instance.print_it()
stack_reverse(my_instance)
print('The stack is:')
my_instance.print_it()

输出

Enter the elements to add to the stack: 23 56 73 81 8 9 0
The reversed stack is:
0
9
8
81
73
56
23
The stack is:
23
56
73
81
8
9
0

解释

  • 创建’Stack_structure’类,初始化一个空列表。

  • 定义了一个“check_empty”方法来查看堆栈是否为空。

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

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

  • 定义了一个名为“print_it”的方法,用于帮助打印堆栈的元素。

  • 定义了一个名为“insert_bottom”的方法,它可以将元素添加到堆栈底部,而不是默认添加到顶部。

  • 另一个名为“stack_reverse”的方法被定义,它可以帮助反转给定的堆栈。

  • 定义此“Stack_structure”的实例。

  • 从用户那里获取堆栈的元素。

  • 反复迭代,并调用方法将值添加到堆栈并将其打印在控制台上。

  • 现在,在此列表上调用“stack_reverse”。

  • 调用“print_it”以在控制台上显示翻转的堆栈。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程