用递归操作逆序栈---递归

来源:互联网 发布:魔音软件男变女 编辑:程序博客网 时间:2024/05/20 23:32

一个栈依次压入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;    }}
原创粉丝点击