📅  最后修改于: 2023-12-03 15:36:20.941000             🧑  作者: Mango
在计算机科学中,堆栈(Stack)是一种操作受限的线性数据结构。它是一种基于先进后出(Last In First Out,LIFO)策略的数据结构,即最后插入的元素最先弹出。堆栈有两个基本操作:压入(push)和弹出(pop)。我们通常也会需要查看堆栈中的所有元素,这就需要从顶部到底部打印堆栈元素。
实现从顶部到底部打印堆栈元素的方式有以下几种:
定义一个临时栈,把原始栈中的元素一个个取出来,依次加入到临时栈中,最后从临时栈中依次取出元素,即可实现从顶部到底部打印。
代码:
def print_stack(stack):
temp_stack = []
while stack:
temp_stack.append(stack.pop())
while temp_stack:
print(temp_stack.pop())
从栈的底部开始逐个弹出元素,直到栈为空,然后从递归层中返回弹出的元素。每次递归调用都会弹出栈的底部元素,因此在最后一次递归调用完成后,所有元素都已经被弹出并在递归调用的不同层级中打印了。
代码:
def print_stack(stack):
if not stack:
return
temp = stack.pop()
print_stack(stack)
print(temp)
使用迭代方式或递归方式都可以实现从顶部到底部打印堆栈元素。如果栈较小,可以使用递归方式,但如果栈较大,则最好使用迭代方式以减少递归层数。