c - 字符串的反转

1,递归实现

 1 // 递归实现字符串反转(可通过栈的调用来加深理解).     

 2 char *

 3 reverse(char *c) {

 4     if(!c)

 5         return NULL;

 6     int len = strlen(c);

 7     if(len > 1) {

 8         char tmp = c[0];

 9         c[0] = c[len - 1];

10         c[len - 1] = '\0';    //尾部的字符在下一次递归时不处理.

11         reverse(c + 1);

12         c[len - 1] = tmp;

13     }

14     return c;

15 }

2,非递归实现(比较简单)

 1 //非递归实现.

 2 void

 3 non_recursive(char *c) {

 4     int len = strlen(c);

 5     char tmp;

 6     for(int i = 0; i < len / 2; i++) {

 7         tmp = c[i];

 8         c[i] = c[len - i - 1];

 9         c[len - i - 1] = tmp;

10     }

11 }

 

你可能感兴趣的:(字符串)