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 }
时间: 2024-10-10 14:53:36