一个栈依次压入1,2,3,4,5那么从栈顶到栈底分别为5,4,3,2,1。
将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现了栈中元素的逆序,请设计一个算法实现逆序栈的操作,
但是只能用递归函数来实现,而不能用另外的数据结构。
给定栈的大小n和一个栈Stack,请返回逆序后的栈。
测试样例:
5
1 2 3 4 5
返回:
5 4 3 2 1
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++){
a[i]=sc.nextInt();
}
sc.close();
reverse(a,n);
for(int i=0;i<n;i++){
System.out.print(a[i]+" ");
}
}
//第一步,将最上面的数出栈保存,然后将下面的栈逆序(这里用到递归);
//第二步,将原先最上面的数插到最底层
public static int[] reverse(int a[],int n){
if(n==1){
return a;
}
int tmp=a[0];
for(int i=0;i<n-1;i++){//集体左移
a[i]=a[i+1];
}
a[n-1]=tmp;//栈顶存放最小元素
a=reverse(a,--n);
return a;
}
}