Задача о печати слов в предложении в обратном порядке. Вся идея заключается в том, чтобы свернуть строку а затем свернуть отдельные лексемы. Реализация на С++ представлена ниже.
Code:
#include <iostream>
void reverseString(char *b, char *e) {
char tmp;
while (b < e) {
tmp = *b;
*b = *e;
*e = tmp;
++b;
--e;
}
}
void reverseWords(char* str) {
char *front = str;
char *back = str;
while (*++back);
--back;
reverseString(front, back);
while(*front) {
for(; *front && *front == ' '; ++front);
for(back = front; *back && *back != ' '; ++back);
--back;
reverseString(front, back);
front = ++back;
}
}
int main() {
char s[] = {"The quick brown fox jumps over the lazy dog"};
reverseWords(&s[0]);
std::cout << s;
return EXIT_SUCCESS;
}