当前位置:网站首页>【C语言】字符串逆序(递归实现)
【C语言】字符串逆序(递归实现)
2022-07-27 21:17:00 【helinliupi-何】
博客主页:Luo-Kuang-何
座右铭:一起走向人生巅峰的路上
学习进度:【C语言】
博客声明:我将尽我所能,用心写好每一份博客,让更多小伙伴能够与我交流学习心得。
如有不足,请指正。学习就是在不断犯错并改正的过程!
前言:
这里我就简单讲解一下我做这题的一些思路和方法。
1.先上思维导图
1.1递归主体
思路:因为我想的是每次把最后面的字符放到最前面来,当时没想到2边同时交换往中间靠拢的方法,能力不够。回归正题,我把除第一个已经完成逆序的arr[0],后面都把字符往后移,会空出arr[1],这时我把用第三方arr1存储的arr[0]原来的值放入,就从arr[1]到最后一位形成一个新的排序,只是最后面那个字符已经逆序。这时我用新指针指向arr[1],就可以依次逆序一个字符,最终完成所以逆序。
过程有点复杂,且要递归次数相对较多,但确实是我第一次做这种题能想到的思路最简化了。
这里我是把arr[0]放到第三方arr1里存放,等下要赋值给arr[1]。
把最后面字符赋值给第一个arr[0]。
这里可以看出,我通过交换后移,把 a b c d \n 顺序通过指针改成了 da b c \n
这时我把指针后移,指针就从指向arr[0]改成指向arr[1],依次递归下去,也依次逆序一个字符。
最后当指针指向\n时,说明没有字符需要逆序了,完成递归,终止。
2.代码实现
2.1主要展示函数代码
void reverse_string(char* string)
{
char arr1 = 0;
int i = 0;
if (*string == '\n'); //判断第1个字符是否为’\n',是则停止递归
else
{
for (i = 0; *(string + i+1) != '\0'; i++); //计算新指针到'\0'的长度是i+1
arr1 = *string; //先把新指针指向第一个地址里的数提*string出来放到arr1里
*string = *(string + i); //把最后面的数*(string + i)放在指向的第一个地址*string里
for (; i > 1; i--) //从新指针第二个数到第i+1依次往后移
{
*(string + i) = *(string + i - 1);
}
*(string + i) = arr1; //把arr1里数赋值给第二个数
reverse_string((string + 1)); //否则把(string+1)地址给新string指针
}
}这里我用if判断到终点没,注意我写的是if();这后面;表示如果成立我什么都不做。终止。
我用了一个for(也写了;)语句计算出指针指向到\n的距离得出字符剩余数量为i+1个。
成功完成第一个逆序后,用for从第二个开始往后移,再把第二个存上原来第一个的字符。
最后指针后移。
总结:
我的思路可能有点复杂,仅供各位参考,希望你们能想出更简单的方法实现。
结语:
各位小伙伴们,觉得有用就给波三连呗!如有错误,请指正,谢谢大家!如果大家有不同意见,请与我交流,一起进步
我们顶峰相见!!!️
边栏推荐
猜你喜欢

org.junit.runners.model. InvalidTestClassError: Invalid test class ‘com.zhj.esdemo. MysqlTests‘: 1.

传奇服务端:GOM GeeM2引擎更新时必须要修改哪些地方?

基于原生js实现今日新闻网站

BUUCTF-RSA

UE4 official AEC blueprint case course learning notes
![[NCTF2019]babyRSA1](/img/c1/52e79b6e40390374d48783725311ba.gif)
[NCTF2019]babyRSA1
![[RoarCTF2019]RSA](/img/0e/8c8371ccf40094e5b03e502d6ae851.png)
[RoarCTF2019]RSA

MapReduce (III)
![[C language] address book (dynamic version)](/img/29/3df19c187bee31ee4671e12d7cc7ff.jpg)
[C language] address book (dynamic version)

Legendary Internet Setup tutorial with graphic explanation - GOM engine
随机推荐
主数据管理理论与实践
BUUCTF-RSA
BUUCTF-RSA roll
The first activity of togaf10 standard reading club was successfully held, and the wonderful moments were reviewed!
解密 OOM 崩溃下降 90% 的秘密~
[roarctf2019] babyrsa Wilson theorem
Arm32进行远程调试
JS promotion: array flattening in JS
Introduction to several common usage scenarios of message queue
Smartrefresh nested multiple recycleview sliding conflicts and incomplete layout display
蚁剑常见报错
liux常用命令(查看及其开放防火墙端口号+查看及其杀死进程)
[GWCTF 2019]BabyRSA1
重新定义分析 - EventBridge 实时事件分析平台发布
Flutter pull_ to_ refresh-1.6.0/lib/src/internals/slivers. dart:164:13: Error: Method not found: ‘descr
CPU的控制方式
The interviewer asked the thread safe list, and I'm not afraid after reading it!
Control mode of CPU
UE4官方AEC蓝图案例课程学习笔记
xss.haozi.me练习通关



