使用递归反转栈的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”以在控制台上显示反转的栈。

更新于:2021年4月15日

540 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.