实现字符串的逆序
来源:互联网 发布:预算大师软件 编辑:程序博客网 时间:2024/06/04 20:29
第一种递归方式实现:例如下边这个程序,第一次把a取出来,存放在临时变量中,将f放到a的位置,再将原来f的位置换为’\0’,再让针针指向以b为首地址的字符串,以此类推,直到指向的下一个字符串的长度不在大于一,递归调用函数结束,输出一系列递归值。
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>void reverse(char *str){ assert(str != NULL); int len = strlen(str); int tmp = *str; *str = *(str + len - 1); *(str + len - 1) = '\0'; if (strlen(str + 1) > 1) reverse(str + 1); *(str + len - 1) = tmp;}int main(){ char a[] = "abcdef"; reverse(a); printf("%s\n",a); system("pause"); return 0;}
给函数传递字符串的首位地址,用指针交换最左边和最右边的字符,以此类推,不断向中间靠拢。
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>void reverse(char *start, char *end){ assert(start); assert(end); while (start < end) { char tmp = *start; *start = *end; *end = tmp; start++; end--; }}int main(){ char a[] = "abcedf"; int len = strlen(a) - 1; reverse(a,a+len); printf("%s\n",a); system("pause"); return 0;}
直接传给函数字符串的首地址,创建临时变量来交换左右字符。交换的次数为 :字符串长度/2.
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>void reverse(char *str){ assert(str); char *p = str; char tmp = *str; while (*str) { int i = 0; for (i = 0; i < strlen(p) / 2; i++) { int len = strlen(str); char tmp1 = *str; *str = *(str + len - 1 -i); *(str + len - 1-i) = tmp1; str++; } break; }}int main(){ char a[] = "abcdefg"; reverse(a); printf("%s\n",a); system("pause"); return 0;}
0 0
- 实现字符串的逆序
- 递归实现字符串的逆序
- 递归实现字符串的逆序。
- 递归算法实现字符串的逆序存储
- 递归算法实现字符串的逆序输出
- 用递归实现字符串的逆序
- 递归算法实现字符串的逆序存储
- c语言实现字符串的逆序输出
- 字符串的逆序(Python/C++实现)
- 指针实现字符串逆序
- 实现字符串逆序输出
- C实现字符串逆序
- 字符串逆序算法实现
- 实现字符串逆序存储
- 实现字符串逆序
- 字符串的逆序递归实现 C语言实现
- 字符串的逆序输出
- 一个字符串的逆序
- 数据结构上机测试1:顺序表的应用 7.24补
- SharedPreferences使用
- jquery的lazyload.js实现图片的懒加载
- 强大的vim配置文件,让编程更随意
- iOS新特性实现3DTouch开发
- 实现字符串的逆序
- Redis 哈希(Hash)
- kafka源码之日志管理-LogManager
- ROS by example -第十章 机器人视觉
- scala 泛型之初解,定界,类型约束,逆变与协变
- 定位磁盘I/O过高的方法
- Redis未授权访问漏洞
- java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
- Redis 列表(List)