import java.util.Stack;
public class ReverseStackRecursive {
/**
* Q 66.颠倒栈。
* 题目:用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。
* 颠倒之后的栈为{5,4,3,2,1},5处在栈顶。
*1. Pop the top element
*2. Reverse the remaining stack
*3. Add the top element to the bottom of the remaining stack
*/
public static void main(String[] args) {
ReverseStackRecursive r=new ReverseStackRecursive();
Stack<Integer> stack=new Stack<Integer>();
for(int i=0;i<10;i++){
stack.add(i);
}
r.printStack(stack);
r.reverseStack(stack);
r.printStack(stack);
}
public void reverseStack(Stack<Integer> stack){
if(!stack.empty()){
Integer top=stack.pop();
reverseStack(stack);
addToBottom(stack,top);
}
}
public void addToBottom(Stack<Integer> stack,Integer ele){
if(stack.empty()){
stack.push(ele);
}else{
Integer top=stack.pop();
addToBottom(stack,ele);//important
stack.push(top);
}
}
public void printStack(Stack<Integer> stack){
/*
while(!stack.empty()){
System.out.print(stack.pop()+",");
}
*/
//we don't remove the elements in the stack.
for(Integer x:stack){
System.out.print(x+",");
}
System.out.println();
}
}
分享到:
相关推荐
java代码-使用Java递归求和1+2+3+...+n的源代码 ——学习参考资料:仅用于个人学习使用!
java语法 method 递归 马克-to-win java视频 方法 重载
java-树状结构展示-递归查询,只查询一次数据库,提高性能,减少响应时间
n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---...
代码有详细注释! 1.语言:使用java编程 2.数据结构:使用单链表头插法仿实现栈 3.非递归使用DFS搜索一条路径 4.递归求解所有路径
C语言,将一个递归程序用栈改写为非递归,其中用到栈的基本操作
【Java】求1-100范围内的素数递归方法代码例子。分享,感谢。
输入节点建立二叉树, 遍历递归的先中後序, 非递归的先中後序, 计算出深度 结点数 /* 运行结果: ------------------------ 请先序输入二叉树(如:ab三个空格表示a为根节点,b为左子树的二叉树) ab c 先序递归...
NOIP基础算法--枚举、递推和递归 很有用的哦,看看有好处的
文件递归-XML递归-树图递归 面试中的常见递归算法:附带截图和详细代码
可以节省(n-1)!次递归的排列生成工具类(java).txt
对下列文法,用递归下降分析法对任意输入的符号串进行分析: (1)E->eBaA (2)A->a|bAcB (3)B->dEd|aC ...(2)输入一以#结束的符号串:在此位置输入符号串例如:eadeaa# (3)输出结果:eadeaa#为合法符号串
2---前序遍历(递归) 3---前序遍历(非递归) 4---中序遍历(递归) 5---中序遍历(非递归) 6---后序遍历(递归) 7---后序遍历(非递归) 8---求树高 9---求叶子总数 10---输出二叉树 11---交换左右子树 ...
后台返回菜单无限层级展示
对于递归算法,其重点是书写递归函数;而对于非递归使用栈或者队列实现。
递归 阶乘 求和 用两个递归实现1!+2!+3!+。。。+n! 对新手有帮助!
所用算法是非递归算法,输入为迷宫的行数和列数,然后在对应位置上输入其值(0表示该位置通,1表示该位置不通)。输出则是以三元组(i,j,d)的形式,其中(i,j)表示迷宫中的一个坐标,d表示走到下一坐标的方向, 实例 ...
一个栈依次压入1、2、3、4、5,那么栈顶到栈底分别为:5、4、3、2、1。 将这个栈逆置后栈顶到栈底分别为1、2、3、4、5。 用递归函数来实现,不能用其他数据结构。 解题思路及代码 1、递归函数一:将栈的栈底元素一...
【RP-CNN-LSTM-Attention分类】基于递归图优化卷积长短期记忆神经网络注意力机制的数据分类预测 【RP-CNN-LSTM-Attention分类】基于递归图优化卷积长短期记忆神经网络注意力机制的数据分类预测 【RP-CNN-LSTM-...
斐波那契数列(fibonacci)-java的非递归实现。