栈的逆序(递归实现)
package stack;
import java.util.Stack;
class Rever{
//递归,把栈底元素压入栈底
public void rever(Stack<Integer> stack) {
if(stack.isEmpty()) {
return ;
}
int i=get(stack);
rever(stack);
stack.push(i);
}
//递归,取出栈底元素,并返回
public int get(Stack<Integer> stack) {
int res=stack.pop();
if(stack.isEmpty()) {
//返回栈底的元素
return res;
}else {
//上层递归的结果赋值给last
int last=get(stack);
//这层的结果压入栈
stack.push(res);
//返回last,即栈底元素
return last;
}
}
}
public class ReverStack {
public static void main(String[] args) {
Stack<Integer> stack=new Stack<Integer>();
for(int i=0;i<5;i++) {
stack.push(i);
}
Rever r=new Rever();
r.get(stack);
//r.rever(stack);
while(!stack.isEmpty()) {
System.out.println(stack.pop());
}
}
}