/**
字符串就地逆序,递归法、非递归法
**/
#include<stdio.h>
#include<string.h>
//------------------------------------
//以下是递归算法
void reverse(char * str,int len,int i)
{
char tmp;
if(i < len)
{
tmp = str[i];
str[i] = str[len-1];
str[len-1] = tmp;
reverse(str,len-1,++i);
}
}
void reverse(char * str)
{
int len = strlen(str);
reverse(str,len,0);
}
//-----------------------------------
//以下是非递归算法
//-----------------------------------
void reverse1(char * aString)
{
char tmp;
int len = strlen(aString)-1;
for(int i = 0;i <= len; i++,len--)
{
tmp = aString[i];
aString[i] = aString[len];
aString[len] = tmp;
}
}
int main()
{
char str[] ="abcde";
reverse(str);
printf("the result is:%s\n",str);
char str1[] ="123456";
reverse1(str1);
printf("the result is:%s\n",str1);
return 1;
}