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