您的位置:首页 > 其它

不用开辟数据的临时空间,怎么完成字符串的逆转?

2014-05-05 09:34 375 查看
不用开辟数据的临时空间完成两个数据的交换,我们一般会想到两种方法:

1、a=a+b  由于a+b可能会溢出,所以一般不采用这种方法 

      b=a-b

      a=a-b

2、a=a^b  一般使用异或的方式去交换两个数据,并且不用开辟临时空间

      b=a^b

     a=a^b

eg:不开辟临时空间,完成字符串的逆转

#include<stdio.h>

#include<string.h>

void reverse(char * str)

{

     int len=strlen(str);

     //printf("len is %d\n",len); is 10

    

     int start=0,end=len-1;

     while(start<end)

     {

        str[start]=str[start]^str[end];

        str[end]=str[start]^str[end];

        str[start]=str[start]^str[end];

        ++start;

        --end;

     }

}

int main()

{

    char str[]="HelloWorld";

    //printf("sizeof is %d\n",sizeof(str)); is 11

    printf("orgin str is:\t%s\n",str);

    reverse(str);

    printf("The end str is:\t%s\n",str);

    system("pause");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐