递归实现逆序,不另外设串存储空间

1.从输入到存储时就改变存储的顺序

 

void InvertStore(char a[]){
    char ch;
    static int i = 0;
    cin >> ch;
    if(ch != '.'){
        InvertStore(a);
        a[i++] = ch;
    }
    a[i] = '\0';           //结束符
}

通过递归的递归工作栈,使输入的字符存入到栈当中,改变存储的顺序。

2.对已有存储空间的字符串实现逆序

void change(char a[],int i,int j){    //交换i和j
    char a1 = a[i];
    a[i] = a[j];
    a[j] = a1;
}


void change2(char a[],int i,int j){          //从i到j实现逆序

    if(i==j||j+1==i) return;
    else {change(a,i,j);change2(a,++i,--j);}
}

通过两两交换实现逆序

posted @ 2020-11-22 15:00  倔强的不死人  阅读(371)  评论(0编辑  收藏  举报