字符串逆序(递归实现)——C语言

导读:本篇文章讲解 字符串逆序(递归实现)——C语言,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

问题描述:

编写一个函数 reverse_string(char * string)(递归实现)

实现:将参数字符串中的字符反向排列,不是逆序打印。

要求:不能使用C函数库中的字符串操作函数。

比如:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY3JhenlfX3hpZXlp,size_9,color_FFFFFF,t_70,g_se,x_16

 逆序之后数组的内容变成: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;

}

 

思路图解:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY3JhenlfX3hpZXlp,size_20,color_FFFFFF,t_70,g_se,x_16

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/94632.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!