3.如何仅用递归函数和栈操作逆序一个栈
2015-10-03 18:46
288 查看
题目:实现一个栈中的元素的逆序,只能用递归来实现,不能使用其他数据结构
思路:我对递归不是很熟悉,看了书上的代码,了解了其中的意思后敲了一份,主要是要递归取出该栈中的每一个元素,然后将元素再压栈。所以有两个函数,一个就是取出栈底元素,另一个就是压栈操作,(其实如果直接pop就不用递归了,我觉得这题的意义不大,只是单纯考察递归的使用,因为不用递归更方便操作)
import java.util.Stack;
public class ReverseStackByrecursion {
public int getBottomElement(Stack<Integer> stack){
int tmp = stack.pop();
if(stack.isEmpty())
return tmp;
else{
int last = getBottomElement(stack);
stack.push(tmp);
return last;
}
}
public void reverse(Stack<Integer> stack){
if(stack.isEmpty())
return;
int e = getBottomElement(stack);
reverse(stack);
stack.push(e);
}
}
思路:我对递归不是很熟悉,看了书上的代码,了解了其中的意思后敲了一份,主要是要递归取出该栈中的每一个元素,然后将元素再压栈。所以有两个函数,一个就是取出栈底元素,另一个就是压栈操作,(其实如果直接pop就不用递归了,我觉得这题的意义不大,只是单纯考察递归的使用,因为不用递归更方便操作)
import java.util.Stack;
public class ReverseStackByrecursion {
public int getBottomElement(Stack<Integer> stack){
int tmp = stack.pop();
if(stack.isEmpty())
return tmp;
else{
int last = getBottomElement(stack);
stack.push(tmp);
return last;
}
}
public void reverse(Stack<Integer> stack){
if(stack.isEmpty())
return;
int e = getBottomElement(stack);
reverse(stack);
stack.push(e);
}
}
相关文章推荐
- hive,spark的远程调试设置
- 安卓控件使用系列29:TabHost卡片的使用方法2不继承TabActivity、TabHost控件、一个布局文件
- hive,spark的远程调试设置
- 战略模式和简单工厂
- Linux下的I/O
- ubuntu 16.10 g++6.2 编译cppcms1.0.5
- 用shape画虚线
- 【转】回答的智慧
- unity3d 类的继承关系
- goquery使用
- hdu 4454 Stealing a Cake(三分之二)
- Struts2与SpringMVC的区别
- HDU 2612 -Find a way (注重细节BFS)
- UVA 12206 - Stammering Aliens(后缀数组)
- 海量数据处理-邮箱黑名单
- Hadoop eclipse插件编译与配置
- 三星S5PV210启动相关的BLO/BL1/BL2之间的关系【转载学习】
- android组件式开发(1)——可复用的弹出式菜单
- 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0 +VS 2013 开发环境配置
- hdu 5480 Conturbatio 区间和