题解 | #用递归函数和栈逆序一个栈#
用递归函数和栈逆序一个栈
https://www.nowcoder.com/practice/1de82c89cc0e43e9aa6ee8243f4dbefd
import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
Stack<Integer> s = new Stack<Integer>();
int n = sc.nextInt();
for(int i = 0; i < n; i++) {
int t = sc.nextInt();
s.push(t);
}
reverseStack(s);
for(int i = 0; i < n- 1; i++) {
int t = s.pop();
System.out.print(t + " ");
}
System.out.print(s.pop());
}
// 得到并且删除栈底元素的递归函数
public static int getAndDeleteLastElement(Stack<Integer> s) {
int re = s.pop();
if(s.isEmpty()) {
return re;
} else {
int last = getAndDeleteLastElement(s);
s.push(re);
return last;
}
}
public static void reverseStack(Stack<Integer> s) {
if(s.isEmpty()) return;
int temp = getAndDeleteLastElement(s);
reverseStack(s);
s.push(temp);
}
}
需要设计两个递归函数
一个递归函数实现返回并去除栈底元素
另一个递归函数实现逆转栈:每次调用上一个函数获取栈底元素并在本函数返回将其压入栈中
利用两个递归函数+栈操作实现栈的逆序,一个递归函数负责取栈底元素,另一个递归函数负责重新压入
#算法题#

文远知行公司福利 522人发布
查看9道真题和解析