1.题目:
题目描述
一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构。
输入描述:
输入数据第一行一个整数N为栈中元素的个数。 接下来一行N个整数X_iXi表示从栈顶依次到栈底的每个元素。
输出描述:
输出一行表示栈中元素逆序后的每个元素
示例1
输入
复制
5 1 2 3 4 5
输出
复制
5 4 3 2 1
2.代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader buff=new BufferedReader(new InputStreamReader(System.in));
Stack<Integer>sta=new Stack<>();
int n=Integer.parseInt(buff.readLine());
String str=buff.readLine();
String []str1=str.split(" ");
for(int i=0;i<str1.length;++i) {
sta.push(Integer.parseInt(str1[i]));
}
for(int i=0;i<str1.length;++i) {
System.out.print(revese(sta)+" ");
}
}
public static int revese(Stack<Integer> sta) {
if(!sta.isEmpty()) {
return sta.pop();
}
return sta.peek();
}
}
3.总结
这个题目主要可以通过两个操作:
1)返回并删除栈底元素;
2)移除并返回当前栈底元素
但是这篇博客中的题目,只需要直接打印出来即可,在代码中直接获取top,然后打印即可。
这个题目主要考察的是栈的操作和递归函数的设计。