Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1056725
  • 博文数量: 573
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 66
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-28 16:21
文章分类

全部博文(573)

文章存档

2018年(3)

2016年(48)

2015年(522)

分类: C/C++

2015-12-02 16:52:51


点击(此处)折叠或打开

  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>

  4. /*功能:递归实现字符串的反转*/

  5. char * reverse3(char * str)
  6. {
  7.     if(str == NULL)
  8.         return NULL;
  9.     int len=strlen(str);
  10.     if(len > 1)
  11.     {
  12.         char ctemp=str[0];
  13.         str[0]=str[len-1];
  14.         str[len-1]='\0';
  15.         
  16.         reverse3(str+1);
  17.         str[len-1]=ctemp;
  18.     }
  19.     return str;
  20. }

  21. char * reverse2(char * str)
  22. {
  23.     if(str == NULL)
  24.         return NULL;
  25.     int len = strlen(str);
  26.     if(len > 1)
  27.     {
  28.         char temp = str[0];
  29.         str[0] = str[len-1];
  30.         str[len-1] = temp;
  31.     
  32.         char newstr[len+1];
  33.         memset(newstr, 0, sizeof(newstr));
  34.         int newlen = strlen(str) - sizeof(char)*2;
  35.         if(newlen > 1)
  36.         {
  37.             memcpy(newstr, str+sizeof(char)*1, sizeof(char)*newlen);
  38.             reverse2(newstr);
  39.             memcpy(str+sizeof(char)*1, newstr, sizeof(char)*newlen);
  40.         }
  41.     }
  42.     return str;
  43. }

  44. /*功能:非递归实现字符串的反转*/
  45. char * reverse1(char * str)
  46. {
  47.     if(str == NULL)
  48.         return NULL;
  49.     char * head = str;
  50.     char * tail = str + strlen(str) -1;
  51.     char temp;
  52.     while(head < str + strlen(str)/2)
  53.     {
  54.         temp = *head;
  55.         *head++ = *tail;
  56.         *tail-- = temp;
  57.     }
  58.     return str;
  59. }

  60. int main(int argc, char * * argv)
  61. {
  62.     printf("***********************************\n");
  63.     char str1[1024];
  64.     memset(str1, 0, sizeof(str1));
  65.     strcpy(str1, "wangxiancai!");
  66.     printf("str1 = [%s]\n", str1);
  67.     reverse1(str1);
  68.     printf("str1 = [%s]\n", str1);
  69.     
  70.     printf("***********************************\n");
  71.     char str2[1024];
  72.     memset(str2, 0, sizeof(str2));
  73.     strcpy(str2, "123");
  74.     printf("str2 = [%s]\n", str2);
  75.     reverse2(str2);
  76.     printf("str2 = [%s]\n", str2);
  77.     printf("***********************************\n");
  78.     
  79.     char str3[1024];
  80.     memset(str3, 0, sizeof(str3));
  81.     strcpy(str3, "12345678");
  82.     printf("str3 = [%s]\n", str3);
  83.     reverse3(str3);
  84.     printf("str3 = [%s]\n", str3);
  85.     printf("***********************************\n");
  86.     
  87.     return 0;
  88. }

阅读(438) | 评论(0) | 转发(0) |
0

上一篇:remove函数

下一篇:日志函数的实现

给主人留下些什么吧!~~