您的位置:首页 > 其它

如何仅用递归函数和栈操作逆序一个栈

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中查看
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: