使用递归在Python中反转堆栈

isa*_*sal 5 python recursion

我正在做一些练习题.这个需要在不使用除另一个堆栈之外的任何其他数据结构的情况下反转堆栈.

我知道我需要一个辅助函数,在原始堆栈为空时附加弹出的数字.

有人能让我开始吗?我被困在这里

def flip_stack(s):
    if not s.is_empty():
        temp = s.pop
        flip_stack(s)
Run Code Online (Sandbox Code Playgroud)

谢谢!

Stack类有pop,pushis_empty功能.

Ósc*_*pez 0

这是另一种可能性,使用累加器和辅助函数。我只使用类中提供的方法Stack,没有使用其他数据结构(例如Python的列表):

def flip_stack(s):
    return flip_stack_helper(s, Stack()) # Stack is your stack class

def flip_stack_helper(s, t):
    if s.is_empty():
        return t
    t.push(s.pop())
    return flip_stack_helper(s, t)
Run Code Online (Sandbox Code Playgroud)

请注意,原始堆栈最终将为空,并返回翻转后的堆栈。