思路:可以利用递归来实现栈的颠倒。首先弹出栈顶元素,然后递归调用颠倒栈函数,将剩余的元素颠倒,再将弹出的元素放到栈底即可。

Python代码实现如下:

def reverse_stack(stack):
    if not stack:
        return
    temp = stack.pop()
    reverse_stack(stack)
    insert_bottom(stack, temp)

def insert_bottom(stack, val):
    if not stack:
        stack.append(val)
    else:
        temp = stack.pop()
        insert_bottom(stack, val)
        stack.append(temp)

其中,reverse_stack函数用于颠倒栈,insert_bottom函数用于将元素插入到栈底。在reverse_stack函数中,首先弹出栈顶元素,然后递归调用reverse_stack函数,将剩余的元素颠倒,最后再将弹出的元素插入到栈底。在insert_bottom函数中,如果栈为空,则将元素直接放入栈中;否则,弹出栈顶元素,递归调用insert_bottom函数,将元素插入到栈底,最后再将弹出的元素放回栈中。

题目:用递归颠倒一个栈。例如输入栈1 2 3 4 51在栈顶。颠倒之后的栈为5 4 3 2 15处在栈顶。

原文地址: https://www.cveoy.top/t/topic/b4Gm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录