1、问题描述:

例:I am student    ------>结果为:student am I

算法思想:

  先将整个字符串反转一遍,然后在从头开始,遇到空格的在次进行反转,就可以实现反转字符串中的单词了;

2、代码实现

#include
#include
#include
void revStr(char *str, int from, int to);void finalRev(char *str);void finalRev(char *str){    int from = 0;    int to = 0;    while(str[to]){        while(isalpha(str[to])){            to++;        }        revStr(str, from, to-1);        while(isspace(str[to])){  //针对中间出现多个空格的情况,可以跳跃过去            to++;        }        from = to;    }}void revStr(char *str, int from, int to){    char tmp;    while(from < to){        tmp = str[from];        str[from++] = str[to];        str[to--] = tmp;    }}void main(void){    char str[80];    char *p = str;    int strLen;    int count = 0;    int i = 0;    printf("请输入字符串:\n");    gets(str);    strLen = strlen(str);    revStr(str, 0, strLen-1);    finalRev(str);    puts(str);    }

3、结果截图

算法分析:空间复杂度为:O(1);