给你一个逆序栈,请你逆序这个栈,不能申请额外数据结构,只能使用递归函数 Python实现
1 # 返回并移除当前栈底元素(栈内元素(1,2,3)==> (2,3),弹出1) 2 def getAndRemoveLast(stack): 3 res = stack.pop() # 依次将栈顶元素弹出并保存在res中 4 if len(stack) == 0: # 若此时栈已空:栈底元素返回 5 return res 6 else: 7 last = getAndRemoveLast(stack) # 没有达到栈底则递归求栈底元素,直到栈元素弹完保存在每层递归的res变量中 8 stack.append(res) # 将保存在res中的元素依次再入栈 9 return last 10 11 12 # 逆序压入元素 13 def reverseStack(stack): 14 if len(stack) == 0: 15 return 16 i = getAndRemoveLast(stack) # 依次得到栈底元素,最后的i保存的即是栈顶元素 17 reverseStack(stack) # 每层递归取出栈底的元素并缓存到i中 18 stack.append(i) # 此时栈已空并依次加入最近弹出的栈底元素
Talk is cheap, show my code to you.