递归实现字符串的逆序 C语言实现
首先需要明确的是栈的模型 栈是先进后出的数据结构模型 利用这一数据结构的特性来实现字符串的反转
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
int reverse_string(char *from)
{
if (from == NULL) //判断传进来的是否是一个空的支付串
{
return -1;
}
if (*from == '\0')//判断是否到达字符串的结尾
{
return 0;
}
reverse_string(from + 1);//递归
printf("%c", *from); //利用先进后出的特性 打印结果
return 0;
}
int main(void)
{
char *source = "1234";//测试数据源
reverse_string(source);
return 0;
}
进阶版
#pragma warning(disable:4996)
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
int reverse_string1(char *from, char *new_str)
{
if (from==NULL)
{
return -1;
}
if (*from == '\0')
{
return 0;
}
reverse_string1(from + 1, new_str);
strncat(new_str, from, 1);
return 0;
}
int main(void)
{
char *source = "1234";
char new_str[10] = {0};
reverse_string1(source, new_str);
printf("%s", new_str);
return 0;
}