C语言字符串倒置的递归与非递归解法-创新互联

思路分析

字符串倒置函数的实现,需要我们在函数中使用left、right分别定位字符串的起点、末点,因此我们传参时需要字符串的首地址(str)、字符串的长度(len),将这两个位置的字母互换,然后让left++到字符串下一个地址,right–到字符串末尾的上一个地址,一直重复互换操作,直到不满足left< right,即可实现字符串倒置

站在用户的角度思考问题,与客户深入沟通,找到襄州网站设计与襄州网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名与空间、虚拟主机、企业邮箱。业务覆盖襄州地区。

递归与非递归解法大体的思路是相似的,只不过递归解法中需要考虑如何进行left和right的更新,以此逼近递归条件。

非递归解法
#incldue#includevoid reverse(char* str, int len)
{char* left = str;
	char* right = str + len - 1;
	while (left< right)
	{char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
递归解法
char* reverse(char* str, int len)
{if (*str == '\0')  //判断空串
	{return NULL;
	}
	if (len >1)
	{char tmp = *str;
		*str = *(str + len - 1);

		//下一次进入函数时让最后一个字母暂时置为\0,传str + 1
		//也就完成了left++; right--; 的操作
		*(str + len - 1) = '\0';
		reverse(str + 1);
		
		//最后再把置为\0的字母,重复赋值
		*(str + len - 1) = tmp;
	}
	return str;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前文章:C语言字符串倒置的递归与非递归解法-创新互联
网址分享:http://azwzsj.com/article/gjjhp.html