栈的逆序和递归
来源:互联网 发布:华师公共数据库 编辑:程序博客网 时间:2024/06/01 15:33
一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1。将这个栈转置后,从栈顶到栈底围1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数实现,不能用其他数据结构。
import java.util.Stack;public class Main {public static void reverse(Stack<Integer> stack) {if (stack.isEmpty()) {return;}int i = getAndRemoveLastElement(stack);reverse(stack);stack.push(i);}public static int getAndRemoveLastElement(Stack<Integer> stack) {int result = stack.pop();if (stack.isEmpty()) {return result;} else {int last = getAndRemoveLastElement(stack);//在得到 last 后,会从当前的result逐步递归回第一个result//需要执行完完整的方法,所以不是只压入一个result,压入的result的个数是stack中元素的个数减1stack.push(result);return last;}}public static void main(String[] args) {Stack<Integer> test = new Stack<Integer>();test.push(1);test.push(2);test.push(3);test.push(4);test.push(5);reverse(test);while (!test.isEmpty()) {System.out.println(test.pop());}}}
转自------程序员代码面试指南IT名企算法与数据结构题目最优解
0 0
- 栈的逆序和递归
- 递归的顺序和逆序
- 利用栈和递归进行字符串逆序
- 单链表的逆序实现,递归和非递归算法
- 逆序单链表的递归和非递归实现
- 用递归函数和栈操作逆序栈(递归)
- 由“栈的逆序”谈谈递归算法
- 递归实现栈中元素的逆序
- 单链表逆序-------- 递归和循环
- 只用递归函数和栈操作实现一个栈的逆序
- 算法设计和数据结构学习_8(单链表的递归逆序)
- 链表逆序的循环实现和递归实现
- 算法设计和数据结构学习_(单链表的递归逆序)
- 算法设计和数据结构学习_6(单链表的递归逆序)
- 逆序的两种算法 递归和常规
- 链表的递归逆序输出,和链表的逆序
- 如何使用递归函数和栈操作逆序一个栈
- 仅用递归函数和栈操作逆序一个栈
- ubuntu 14.4 上 nginx服务器的安装
- [BZOJ2434][NOI2011]阿狸的打字机(AC自动机+树状数组)
- layout_weight的正确使用姿势
- 【Android】7、Log相对System.out的优越性
- PHP之目录
- 栈的逆序和递归
- CocoaAsyncSocket使用
- C#Winform程序如何发布并自动升级(图解)
- 找不到类 android...app.WindowDecorActionBar
- CUDA cuBLAS Level1函数介绍
- 探索性测试摘录
- jQuery源码解析(4)—— css样式、定位属性
- C# winform程序怎么打包成安装项目(图解)
- C++常用特性原理解析