思路
- 写一个递归函数,每次返回并移除栈底元素。
- 再写一个递归函数,每次调用第一个递归函数取得栈底元素,再调用自身,再将本次取得的元素入栈。
代码及测试(java)
public static int getAndRemoveBottomEle(Stack<Integer> stack){
int result = stack.pop();
if(stack.isEmpty()){
return result;
}else {
int last = getAndRemoveBottomEle(stack);
stack.push(result);
return last;
}
}
public static void reverse(Stack<Integer> stack){
if(stack.empty()){
return;
}
int i = getAndRemoveBottomEle(stack);
reverse(stack);
stack.push(i);
}
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
System.out.println(stack);
reverse(stack);
System.out.println(stack);
}