On Wed, Jul 13, 2011 at 7:32 AM, Gene <[email protected]> wrote:
> You can recognize a word W, recur to print the rest of the words in
> reverse, then print W:
>
> #include <stdio.h>
> #include <string.h>
>
> void print_words_in_reverse(char *s)
> {
> char *e;
> while (isspace(*s)) s++;
> if (*s == '\0') return;
> e = s + 1;
> while (*e && !isspace(*e)) e++;
> print_words_in_reverse(e);
> printf("%.*s ", e - s, s);
> }
>
> int main(void)
> {
> char line[16 * 1024];
> fgets(line, sizeof line, stdin);
> print_words_in_reverse(line);
> return 0;
> }
>
>
>
Nice. Here is a similar version which, instead of printing, reverses the
string in place in O(n), if that's what's needed.
http://ideone.com/nHcQ3 <http://www.ideone.com/tA6rS>
--
--
You received this message because you are subscribed to the Google Groups
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/algogeeks?hl=en.