问题描述:
编写一个函数 reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列,不是逆序打印。
要求:不能使用C函数库中的字符串操作函数。
比如:
逆序之后数组的内容变成:fedcba
思路:
求逆序字符串,用递归函数实现:
如:“abcdef” ,先逆序 a和 f ,变成 “fbcde\0” ,再逆序b和e,变 “fecd\0” ,然后再逐层递归。
把每一层的首字符拿出来,存到临时变量 temp 中,然后将最后一个字符放在首字符的位置,此最后一个字符用 “\0”替代,这样逐层替换,直到中间的字符长度小于等于1的时候,就开始往回逐层递归。
参考代码:
//实现求数组长度
int my_strlen(char* str)
{
if (*str != ‘\0’)
{
return 1 + my_strlen(str + 1);
}
return 0;
}
//前后元素内容交换内容
void reverse_string(char* string)
{
int len = my_strlen(string);
char temp = 0;
temp = *string;
*string = *(string + len – 1);
*(string + len – 1) = ‘\0’;
if (my_strlen(string + 1) > 1)
{
reverse_string(string + 1);
}
*(string + len – 1) = temp;
}
int main()
{
char arr[] = “abcdef”;
reverse_string(arr);
int i = 0;
for (i = 0; i < my_strlen(arr); i++)
{
printf(“%c”,arr[i]);
}
return 0;
}
思路图解:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/94632.html