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 }

 

posted @ 2014-12-08 09:51  wonkju  阅读(232)  评论(0)    收藏  举报