Python:如何仅用递归函数和栈操作逆序一个栈
- 如何仅用递归函数和栈操作逆序一个栈
- 题目:
- 一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1。
- 将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,
- 但是只能用递归函数来实现,不能用其他数据结构。
方法一:
既然是递归,第一反应是采用两个栈实现该功能实现,依次弹出栈顶元素,然后压入另外一个栈中,代码如下:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import java.util.Stack;public class StackReverse0 {private Stack<Integer> stack0;private Stack<Integer> stack1;public StackReverse0(){stack0 = new Stack<Integer>();stack1 = new Stack<Integer>();}public void getLastElement(){Integer pop = stack0.pop();stack1.push(pop);if(!stack0.isEmpty())getLastElement();}public static void main(String[] args) {StackReverse0 sr = new StackReverse0();sr.stack0.add(1);sr.stack0.add(2);sr.stack0.add(3);sr.stack0.add(4);sr.stack0.add(5);sr.getLastElement();System.out.println(sr.stack1.pop());System.out.println(sr.stack1.pop());System.out.println(sr.stack1.pop());System.out.println(sr.stack1.pop());System.out.println(sr.stack1.pop());}
}
方法2:类似两个stack的思路,不过是使用一个stack搞定。
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import java.util.Stack;
public class StackReverse {public static int getAndRemoveLastElement(Stack<Integer> stack){ //负责删除stack bottom的一个元素,并返回int result = stack.pop();if(stack.isEmpty()){return result;}else{int last = getAndRemoveLastElement(stack);stack.push(result); // stack还原return last;}}public static void reverse(Stack<Integer> stack){if(stack.isEmpty()){return;}int i = getAndRemoveLastElement(stack);reverse(stack);stack.push(i); // 效果就是依次将stack top的元素入栈,最后效果就是stack元素逆序}public static void main(String[] args) {Stack<Integer> stack = new Stack<Integer>();stack.push(1);stack.push(2);stack.push(3);stack.push(4);stack.push(5);reverse(stack);System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());}
}
Python:如何仅用递归函数和栈操作逆序一个栈相关推荐
- 如何仅用递归函数和栈操作逆序一个栈——你要先用stack实现,再去改成递归——需要对递归理解很深刻才能写出来...
/** * 如何仅用递归函数和栈操作逆序一个栈 * 题目: * 一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1. * 将这个栈转置后,从栈顶到栈底为1,2,3,4, ...
- 编程3:仅用递归函数和栈操作逆序一个栈
<?php header("content-type:text/html;charset=utf-8"); /** 仅用递归函数和栈操作逆序一个栈 P8*/function ...
- 栈和队列之仅用递归函数和栈操作逆序一个栈
import java.util.Stack;/*** recursion 递归的意思* @author chenyu* 题目:仅用递归函数和栈操作逆序一个栈,列如一次压入1.2.3.4.5 栈顶到栈 ...
- 用递归函数和栈操作逆序一个栈
以下代码实现的是用递归函数和栈操作逆序一个栈. import java.util.Stack;public class GetAndRemoveLastAndReverse {public stati ...
- 如何仅用递归函数和栈操作逆序一个栈
[题目] 一个栈依次压入1.2.3.4.5,那么从栈顶到栈底分别为5.4.3.2.1.将这个栈转置后,从栈顶到栈底为1.2.3.4.5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他 ...
- 栈与队列3——用递归和栈操作逆序一个栈
题目 一个栈依次压入1,2,3:此时栈顶到栈底元素分别为:3,2,1:将栈反转,使得栈顶到栈底元素为:1,2,3,仅限递归函数,并且不能使用其他数据结构 思路 使用两个函数reverse和getAnd ...
- function 多个函数用一个_用递归函数和栈逆序一个栈
实现栈中元素的逆序,而且只能用到递归,不能使用其他的数据结构. 1 栈和递归 栈是先进后出,后进先出的数据结构.使用两个递归函数来实现: 1.将栈底元素返回并返回.每次递归进入下一层,直到栈为空时,返 ...
- 左神算法:用递归函数和栈逆序一个栈(Java版)
题目描述 一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1.将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数 ...
- 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | 引入线程安全概念 )
文章目录 一.引入线程安全概念 二.完整代码示例 一.引入线程安全概念 在上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 ) ...
最新文章
- python3.8.5怎么用-Python 3.8 新功能大揭秘【新手必学】
- 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)...
- 布线须知:无线AP采用PoE交换机供电的好处
- 幸福指数测试软件,测试你和ta的幸福指数能不能爆表
- java8 stream案例分析
- 99%的面试官都会问到的Java面试题
- jq处理返回来json_4个小窍门,让你在Python中高效使用JSON
- 重磅!尤雨溪公布 Vue 3.0 开发路线
- 雪花算法id长度_分布式全局ID生成器(雪花算法golang无锁版)
- 如何排查mysql数据乱码_如何解决MYSQL数据库中文乱码问题?
- 控制台或者dll中CreateWindow 出错
- 从C# 3.0说以人为本(二)—— LINQ语法结构
- wamp mysql_wamp中如何打开mysql
- 区块链 - 牵一发而动全身的链式结构
- python房价分析论文_用Python研究了三千套房子,告诉你究竟是什么抬高了房价?...
- 如把联想电脑计算机图标放在桌面上,桌面无“我的电脑”图标
- uniapp 图片上传 删除
- 一二线城市知名 IT互联网公司名单(最新整理版跳槽名单)~
- python游戏制作rpg_用 Python 语言来写游戏
- python 如何将负数转换为正数