zoukankan      html  css  js  c++  java
  • 给你一个逆序栈,请你逆序这个栈,不能申请额外数据结构,只能使用递归函数 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)                     # 此时栈已空并依次加入最近弹出的栈底元素
  • 相关阅读:
    五月杂题选做
    BJOI 2021 游记&题解
    U149858
    CF1037简要题解
    CF Round706简要题解
    联合省选 2020
    九省联考 2018 IIIDX
    九省联考 2018 秘密袭击
    AGC006F Balckout
    概率生成函数学习笔记
  • 原文地址:https://www.cnblogs.com/icekx/p/9149173.html
Copyright © 2011-2022 走看看