📜  从顶部到底部打印堆栈元素(1)

📅  最后修改于: 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)
总结

使用迭代方式或递归方式都可以实现从顶部到底部打印堆栈元素。如果栈较小,可以使用递归方式,但如果栈较大,则最好使用迭代方式以减少递归层数。