题目:用递归颠倒一个栈。例如输入栈1 2 3 4 51在栈顶。颠倒之后的栈为5 4 3 2 15处在栈顶。
思路:可以利用递归来实现栈的颠倒。首先弹出栈顶元素,然后递归调用颠倒栈函数,将剩余的元素颠倒,再将弹出的元素放到栈底即可。
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函数,将元素插入到栈底,最后再将弹出的元素放回栈中。
原文地址: https://www.cveoy.top/t/topic/b4Gm 著作权归作者所有。请勿转载和采集!