1,递归实现
// 递归实现字符串反转(可通过栈的调用来加深理解).
char *
reverse(char *c) {
if(!c)
return NULL;
int len = strlen(c);
if(len > ) {
char tmp = c[];
c[] = c[len - ];
c[len - ] = '\0'; //尾部的字符在下一次递归时不处理.
reverse(c + );
c[len - ] = tmp;
}
return c;
}
2,非递归实现(比较简单)
//非递归实现.
void
non_recursive(char *c) {
int len = strlen(c);
char tmp;
for(int i = ; i < len / ; i++) {
tmp = c[i];
c[i] = c[len - i - ];
c[len - i - ] = tmp;
}
}