题目

一个栈依次压入1,2,3;此时栈顶到栈底元素分别为:3,2,1;将栈反转,使得栈顶到栈底元素为:1,2,3,仅限递归函数,并且不能使用其他数据结构


思路

  1. 使用两个函数reverse和getAndRemoveLastElement函数
  2. 详细介绍reverse,reverse负责将栈逆序,通过getAndRemoveLastElement每次可获得当前栈的栈底元素,并且当前栈已经将栈底元素去除掉,通过自身递归,直至栈为空位置,将之前每一轮获得的栈底元素不断地压栈来实现逆序
  3. 详细介绍getAndRemoveLastElement,该函数主要实现弹出栈底元素;核心在于,每一轮pop栈顶元素,自身递归,栈空时,返回栈底的元素,但是并不将栈底元素压栈,因为是if-else的逻辑关系,源码的else中push的是当前轮的result,举个例子:如果当前栈中的元素是2,1(栈顶到栈底)
  • result=2,进入else,调用自身,result=1,返回result,last=1,push 的result=2。因此该函数实现了pop栈底元素

源码

public int getAndRemoveLastElement(Stack<Integer> stack){int result=stack.pop();if(stack.empty()){return result;}else{int last=getAndRemoveLastElement(stack);stack.push(result);return last;}
}public void reverse(Stack<Integer> stack){if(stack.empty()){return ;}int i =getAndRemoveLastElement(stack);reverse(stack);stack.push(i);
}

栈与队列3——用递归和栈操作逆序一个栈相关推荐

  1. 如何仅用递归函数和栈操作逆序一个栈——你要先用stack实现,再去改成递归——需要对递归理解很深刻才能写出来...

    /**  * 如何仅用递归函数和栈操作逆序一个栈  * 题目:  * 一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1.  * 将这个栈转置后,从栈顶到栈底为1,2,3,4, ...

  2. 栈和队列之仅用递归函数和栈操作逆序一个栈

    import java.util.Stack;/*** recursion 递归的意思* @author chenyu* 题目:仅用递归函数和栈操作逆序一个栈,列如一次压入1.2.3.4.5 栈顶到栈 ...

  3. Python:如何仅用递归函数和栈操作逆序一个栈

    如何仅用递归函数和栈操作逆序一个栈 题目: 一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1. 将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序, ...

  4. 编程3:仅用递归函数和栈操作逆序一个栈

    <?php header("content-type:text/html;charset=utf-8"); /** 仅用递归函数和栈操作逆序一个栈 P8*/function ...

  5. 用递归函数和栈操作逆序一个栈

    以下代码实现的是用递归函数和栈操作逆序一个栈. import java.util.Stack;public class GetAndRemoveLastAndReverse {public stati ...

  6. 如何仅用递归函数和栈操作逆序一个栈

    [题目]​ 一个栈依次压入1.2.3.4.5,那么从栈顶到栈底分别为5.4.3.2.1.将这个栈转置后,从栈顶到栈底为1.2.3.4.5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他 ...

  7. 左神算法:用递归函数和栈逆序一个栈(Java版)

    题目描述 一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1.将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数 ...

  8. function 多个函数用一个_用递归函数和栈逆序一个栈

    实现栈中元素的逆序,而且只能用到递归,不能使用其他的数据结构. 1 栈和递归 栈是先进后出,后进先出的数据结构.使用两个递归函数来实现: 1.将栈底元素返回并返回.每次递归进入下一层,直到栈为空时,返 ...

  9. 栈和队列都是限制存取点的线性结构_栈的练习以及解析

    The Practice Of Stack栈的练习01 栈是(). A.顺序存储的线性结构     B.链式存储的非线性结构 C.限制存取点的线性结构     D.限制存储点的非线性结 答案:B 解析 ...

最新文章

  1. 干货 | 统计学概论和医疗临床大数据分析(附PPT下载)
  2. js学习笔记9----时间操作
  3. c语言判断文件是否建立成功,C语言编程之怎样判断某一文件是否存在
  4. ibatis insert mysql_让iBatis中的insert返回主键
  5. java个人中心修改界面怎么整_怎么对个人中心页面访问进行控制
  6. hibernate中java类的成员变量类型如何映射到SQL中的数据类型变化
  7. 百度:在O(1)空间复杂度范围内对一个数组中前后连段有序数组进行归并排序
  8. 【零基础学Java】—类的定义(七)
  9. Object.assign 浅拷贝还是深拷贝
  10. 刷新iframe内容
  11. android 名称解释
  12. MATLAB制作简易小动画入门详解
  13. 随机过程中均值、方差、协方差和相关函数的计算
  14. CenOS 6.0 安装NVIDIA GeFore GT 440 显卡驱动
  15. MEME:motif分析的综合性工具
  16. ClickHouse 创建数据库建表视图字典 SQL
  17. sql server 函数根据分隔符号拆分字符
  18. 计算机各按键的名称,电脑键盘各键名称及功能 电脑键盘上每个键的作用-笑语冰蝉...
  19. 鼠标点击网页空白处出现手机号
  20. 2003服务器系统QQ安装不了,qq怎么安装不了(QQ怎么都安装不上重装也不行,是哪里出了问题?)...

热门文章

  1. AI一分钟 | 谷歌遭特朗普指责;程维、柳青道歉:顺风车业务无限期下线
  2. 学术 | 据说以后在探头下面用帽子挡脸没用了:用于遮挡物检测的对称卷积神经网络——SymmNet...
  3. 开源用于寻找系外行星的代码
  4. Service 层和 Dao 层有必要为每个类都加上接口吗?
  5. 别再说你不会 ElasticSearch 调优了,都给你整理好了
  6. 不止JDK7的HashMap,JDK8的ConcurrentHashMap也会造成CPU 100%
  7. 漫话:如何给女朋友解释什么是单例模式?
  8. 清华NLP实验室刘知远:如何写一篇合格的NLP论文
  9. 深度学习的四个学习阶段!
  10. 更新!带你认识推荐系统全貌的论文清单