通过两个递归函数实现,因为一次递归是不能实现逆序的,两个递归,第一个函数负责返回栈底元素,并且把非栈底元素压回去,第二个函数依次获取每一个栈底元素,再递归压栈就实现了逆序。
下面是实现代码:
package MyQuestion;
import java.util.Stack;
public class ReverseStack {
static Stack<Integer> stack;
public static void main(String[] args){
stack=new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
reverse();
while(!stack.isEmpty())
System.out.print(stack.pop()+" ");
}
static int getLastEle(){
int result=stack.pop();
//说明是底部最后一个元素
if(stack.isEmpty()){
return result;
}else{
//递归,找到最后一个元素返回
int last=getLastEle();
//把不是最后一个元素压回去
stack.push(result);
return last;
}
}
static void reverse(){
if(stack.isEmpty())
return;
else{
int ele=getLastEle();
reverse();
stack.push(ele);
}
}
}