编写一个函数reverse_string(char * string)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中的字符串操作函数。
非递归实现
void reverse(char *str)
{
char *left = str;
char *right = str + strlen(str) - 1;
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}2.递归实现
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char* reverse_string(char * string,int len);
int i,LEN=0;
char arr[]="abcd";
LEN=strlen(arr);
char ret[LEN];
char *p=arr;
for(i=0;i<LEN;i++)
ret[i]=*(reverse_string(p,LEN));
printf("%s\n",ret);
system("pause");
return 0;
}
char* reverse_string(char * string,int len)
{
int static j=0;
char s[len]="0";
if(*string==‘\0‘)
return s;
else
{
s[len-j]=*string;
j++;
reverse_string(string++);
}
}递归优化:
int length(char *str)
{
int count = 0;
while (*str)
{
count++;
str++;
}
return count;
}
void reverse(char *str)
{
int len = length(str);
if (len== 0)
{
return;
}
else
{
char tmp = *str;
*str = *(str + len - 1);
*(str + len - 1) = ‘\0‘;
reverse(1+str);
*(str + len - 1) = tmp;
}
}
int main()
{
char arr[] = "bit-tech";
reverse(arr);
printf("%s\n", arr);
system("pause");
return 0;
}本文出自 “sunshine225” 博客,请务必保留此出处http://10707460.blog.51cto.com/10697460/1753594
原文地址:http://10707460.blog.51cto.com/10697460/1753594