1. 字符串翻转
不考虑空间复杂度,操作数组下标或直接操作指针,也就是首位字符互调。
考虑时间和空间的优化,最好首位两个字符互换。
char * reverse(const char *s) {
char * tmp = malloc(strlen(s)+1);
char *ret=tmp;
strcpy(tmp, s);
char *p = tmp + strlen(s) - 1;
while (p > tmp) {
*p ^= *tmp;
*tmp ^= *p;
*p ^= *tmp;
--p;
++tmp;
}
return ret;
}
2.双链表操作