栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

字符串的逆置-c语言

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符串的逆置-c语言

字符串的逆置
  1. 非递归的方法

字符串到底怎么逆置呢?刚看到时,我也是很懵。仔细想想,不就是第一个字符和最后一个字符进行交换吗?然后是第二个字符和倒数第二字符交换吗?依此类推,就知道怎么写啦~交换会吧、加加减减也是会的吧。代码就出来了。

  • 参考代码
void reverse_string(char* str)
{
	int len = strlen(str);
	char* left = str;
	char* right = str + len - 1;//拿到最后字符的地址
	while (left < right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
int main()
{

	char arr[] = "abcdef";
	reverse_string(arr);
	printf("%s", arr);
	return 0;
}
  1. 递归的方法

如何利用递归来实现呢?其实和上述的思路是一样的。我们可以先逆转第一个字符和最后一个,在处理剩下的字符串。reverse_string(“abcdef”)->freverse_string(“bcdef”)a…

  • 参考代码
void reverse_string(char* str)
{
	int len = strlen(str);
	char tmp = *str;
	*str = *(str + len - 1);
	*(str + len - 1) = '';//改成之后,后面的字符串就是bcde了
	if(strlen(str+1)>=2)//递归的条件,只有一个时就不用递归了
		reverse_string(str + 1);
	*(str + len - 1) = tmp;//函数栈帧,我开始忘了,理解但是写不出来
}
int main()
{

	char arr[] = "abcdef";
	reverse_string(arr);
	printf("%s", arr);
	return 0;
}

不推荐用递归的方法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982625.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号