如何仅用递归函数和栈操作逆序一个栈
2016-07-26 09:32
483 查看
题目
将一个栈里面的元素逆序,只能用递归函数来实现,不能用其他数据结构。要求
只能用递归函数来实现可以使用现成的栈类型
思路
为了将栈逆序,只需要按顺序将栈顶至栈底的元素拿出并移除,放置到栈顶中,这样就可以将栈逆序。代码
实现代码
import java.util.Stack; /** * Created by wentian on 16/6/10. */ public class ReverseStack<T> { public Stack<T> reverseStack(Stack<T> stackData) { int size = stackData.size(); T pushElement = null; for (int i = 0; i < size; i++) { pushElement = getAndPopBottomElement(stackData, i); stackData.push(pushElement); } return stackData; } public T getAndPopBottomElement(Stack<T> stackData, int index) { T bottom = stackData.pop(); if (0 == index) return bottom; T result = getAndPopBottomElement(stackData, index - 1); stackData.push(bottom); return result; } }
测试代码
import org.junit.Test; import java.util.Stack; import static org.junit.Assert.*; /** * Created by wentian on 16/6/10. */ public class ReverseStackTest { @Test public void reverseStack() throws Exception { ReverseStack<Integer> reverseStack = new ReverseStack<Integer>(); Stack<Integer> stackData = new Stack<Integer>(); stackData.push(1); stackData.push(2); stackData.push(3); reverseStack.reverseStack(stackData); while(!stackData.empty()){ System.out.println(stackData.pop()); } } }
在github中查看
相关文章推荐
- 热血军团-MessageDispatch
- SVN-提交时出现(413 Request Entity Too Large)错误解决方法
- jquery判断对象是否为空并遍历对象的简单实例
- 一款漂亮的轻量级bootstrap中文后台管理系统模版
- LeetCode--303. Range Sum Query - Immutable
- 2016合天全国高校网安联赛专题赛--赛前指导练习题web进阶篇Writeup
- PHP进阶(二)——类与对象
- NYOJ 16 矩形嵌套 [DP]
- [HDU2458] Kindergarten [2008 Asia Hefei Regional Contest Online C]
- Android RangeSeekBarView 选定范围值的控件
- MySQL查询数据表中数据记录(包括多表查询)
- eclipse使用和优化配置
- Spring注入遇见的问题
- 【HTTP1.1中文手册】
- iOS开发拓展篇——如何把项目托管到GitHub
- SVN-Permission denied
- Git使用教程
- Android 实现按照图片宽高改变imageview的宽高。
- 转载:哈希表
- Eclipse导入jre方法