// Implementation of reverse () # Include <Stdio. h> # Include < String . H> Char * Reverse ( Char * S ){ Int I, J; For (I = 0 , J = strlen (S )- 1 ; I <J; ++ I ,--J) {s [I] = S [I] ^ S [J]; s [J] = S [I] ^ S [J]; s [I] = S [I] ^ S [J];} Return S ;} Char * Reverse2 ( Char * S ){ Char * Start = S; Char * End = S + strlen (S )- 1 ; While (Start < End ){ * Start = * Start ^ * End; * End = * Start ^ * End; * Start = * Start ^ * End; Start ++ ; End -- ;} Return S ;} Int Main (){ Char STR [] = " Abcdefghijklmnopqrstuvwxyz " ; Printf ( " % S \ n " , STR); printf ( " % S \ n " , Reverse (STR); printf ( " % S \ n " , Reverse2 (STR )); Return 0 ;}
// Implementation of the reverse () function Template # Include <Iostream> # Include <Cstring> Using Namespace STD; Template < Class Bidirectionaliterator> Void Reverse (bidirectionaliterator first, bidirectionaliterator last ){ While (First! = Last) & (first! = -- Last )){ * First = * First ^ * Last; * Last = * First ^ * Last; * First = * First ^ * Last; ++ First;} Template < Class Bidirectionaliterator> Bidirealialiterator reverse2 (bidirectionaliterator first, bidirectionaliterator last) {bidirectionaliterator begin = First; While (First! = Last) & (first! = -- Last )){ * First = * First ^ * Last; * Last = * First ^ * Last; * First = * First ^ * Last; ++ First ;} Return Begin ;} Int Main (){ Char STR [] = " Abcdefghijklmnopqrstuvwxyz " ; Cout <STR < Endl; reverse (STR, STR +Strlen (STR); cout <STR < Endl; cout <Reverse2 (STR, STR + strlen (STR) < Endl; Return 0 ;}