使用递归反转堆栈的 Python 程序
当需要使用递归来反转堆栈数据结构时,除了添加值、删除值和打印堆栈元素的方法之外,还定义了“stack_reverse”方法。
以下是相同的演示-
示例
class Stack_structure: def __init__(self): self.items= [] def check_empty(self): returnself.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'被调用以在控制台上显示反向堆栈。