题解 | #用递归函数和栈逆序一个栈#
用递归函数和栈逆序一个栈
http://www.nowcoder.com/practice/1de82c89cc0e43e9aa6ee8243f4dbefd
import java.util.*;
import java.io.*;
public class Main{
//获取&移除栈底最后一个元素,且将其他元素原封不动压入栈
public static int getAndRemoveLast(Stack<Integer> stack){
int res = stack.pop();
if(stack.isEmpty()){
return res;
}else{
int last = getAndRemoveLast(stack);
//回溯
stack.push(res);
return last;
}
}
//
public static void reverse(Stack<Integer> st){
if(st.isEmpty()){
return;
}
int i = getAndRemoveLast(st);//每一次移除栈底元素
reverse(st);
//回溯
st.push(i);//将栈底元素压入栈顶
}
public static void main(String args[])throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
Stack<Integer> stack = new Stack<>();
int n = Integer.valueOf(in.readLine());
String ins[] = in.readLine().split(" ");
for(int i = 0; i < n; i++){
int num = Integer.valueOf(ins[i]);
stack.push(num);
}
reverse(stack);
for(int i = 0; i < n; i++){
System.out.print(stack.pop() + " ");
}
in.close();
}
}