C语言中 递归实现字符串逆置

递归图解:

每次递归时,都会创建一个字符变量C来保存字符串首位元素,

然后将字符串末尾元素赋给首位

同时字符串的起始位置都会向后推移一位,而结尾位置都会向前推移一位,

而在递归完成后,会将C中保存的字符赋给字符串结尾位置,以实现字符串的逆置

代码实现:

#include<stdio.h>

void reverse_string(char* string)
{
	char c;
	int len = strlen(string);
	if (len > 1)                          //每次递归 len的值都会减2(同时每次递归首位置和末尾位置都不同)
	{
		c = string[0];                    //每次递归都会创建一个 字符变量c,用来保存首元素
		string[0] = string[len - 1];      //把末尾元素赋给首元素
		string[len - 1] = '\0';           //把末尾位置置为 '\0'
		reverse_string(string + 1);
		string[len - 1] = c;               //将首元素放入末尾位置
	}
}


int main()
{
	char string[] = "qwertyuiop";
	printf("逆置前: %s\n", string);

	reverse_string(string);
	printf("逆置后: %s\n", string);

	return 0;
}

运行结果:

逆置前: qwertyuiop
逆置后: poiuytrewq
请按任意键继续. . .

猜你喜欢

转载自blog.csdn.net/mowen_mowen/article/details/83154621
今日推荐