当前位置:网站首页>【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从第二个开始往后移,再把第二个存上原来第一个的字符。
最后指针后移。
总结:
我的思路可能有点复杂,仅供各位参考,希望你们能想出更简单的方法实现。
结语:
各位小伙伴们,觉得有用就给波三连呗!如有错误,请指正,谢谢大家!如果大家有不同意见,请与我交流,一起进步
我们顶峰相见!!!️
边栏推荐
- QT with OpenGL (shadow mapping)
- 基于mediapipe的姿态识别和简单行为识别
- [NPUCTF2020]EzRSA
- Error:svn: E155010: ‘/Users/.../Desktop/wrokspace/xxx‘ is scheduled for addition, but is missing
- BUUCTF-RSA
- 【zer0pts CTF 2022】 Anti-Fermat
- 传奇服务端:GOM GeeM2引擎更新时必须要修改哪些地方?
- 传奇外网架设教程带图文解说——Gom引擎
- Redefine analysis - release of eventbridge real-time event analysis platform
- BUU-CTF basic rsa
猜你喜欢

重新定义分析 - EventBridge 实时事件分析平台发布

BUUCTF-RSA

蚁剑常见报错

Legendary server: what must be modified when the GOM geem2 engine is updated?

Starfish OS X metabell strategic cooperation, metauniverse business ecosystem further

TCP sticking and unpacking problem + Solution

MapReduce (III)

Technical certification | Tupo software and Huawei cloud create a new situation of win-win cooperation
![[RoarCTF2019]babyRSA威尔逊定理](/img/c1/52e79b6e40390374d48783725311ba.gif)
[RoarCTF2019]babyRSA威尔逊定理

How to brush equipment in legendary clothes
随机推荐
BUUCTF-RSA roll
urllib.error. URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: un
[极客大挑战 2019]RCE ME
Unity 实现简单画板画画功能(笔记)
QT with OpenGL (shadow mapping)
2022 International Conference on civil, building and Environmental Engineering (iccaee 2022)
JUC toolkit learning
J9 Digital Science Popularization: how does the double consensus of Sui network work?
14、 C pointer explanation (IV): pointer of pointer
尚硅谷尚品项目汇笔记(一)
(12) 51 Single Chip Microcomputer -- use DS18B20 to measure the outdoor temperature in Gongjiang West
File & recursion 14.1
Lua basic grammar learning
网站被黑后处理方法及删除批量恶意代码的方法步骤
Legendary Internet Setup tutorial with graphic explanation - GOM engine
Control mode of CPU
Zcmu--1720: death is like the wind, I want to pretend to force
[MRCTF2020]babyRSA
New technology leads new changes in marketing of large and medium-sized enterprises, and UFIDA BiP CRM is launched!
JS promotion: array flattening in JS



