If we only need to print the words in reverse order, strtok+recursion can help. Following is the code (which also stores the string into another string, not memory efficient though):
#include <stdio.h> #include <string.h> #include <stdlib.h> char str[] = "This is a new world"; char sstr[sizeof(str)]; char *print_rev(char *tok) { char *nstr = NULL; if (tok) { nstr = strtok(NULL, " "); print_rev(nstr); if (nstr) { // printf("%s ", nstr); strcpy(&sstr[strlen(sstr)], nstr); sstr[strlen(sstr)] = ' '; } } return nstr; } int main(int argc, char *argv[]) { char *nstr; printf("Org string --> %s\n", str); nstr = strtok(str, " "); print_rev(str); strcpy(&sstr[strlen(sstr)], nstr); printf("New string --> %s\n", sstr); return 0; } On Thu, Jul 7, 2011 at 9:10 AM, Navneet Gupta <navneetn...@gmail.com> wrote: > @Piyush, could you elaborate your approach with Linked List? > From what i am getting, even with Linked List, you would need two > traversals at least. > > On Thu, Jul 7, 2011 at 2:07 AM, Piyush Sinha <ecstasy.piy...@gmail.com> wrote: >> Can we do it using linked list if ONE TIME TRAVERSAL is a constraint?? >> >> On 7/6/11, Tushar Bindal <tushicom...@gmail.com> wrote: >>> I read that solution. >>> But the same doubt as Navneet which I think you also raised i one of your >>> posts on that thread >>> >>> On Wed, Jul 6, 2011 at 10:34 PM, Navneet Gupta <navneetn...@gmail.com>wrote: >>> >>>> Saurabh, >>>> >>>> I understood your solution but wonder if it is purely single traversal >>>> >>>> In affect, you have a second traversal when you are popping the >>>> strings from stack to form the reverse order string. >>>> >>>> Though the second activity is less than O(n) i.e. O(#words in string) >>>> Nice solution, this way we can also get rid of extra spaces easily in >>>> the actual string if that is also to be done. >>>> >>>> On Wed, Jul 6, 2011 at 10:16 PM, saurabh singh <saurab...@gmail.com> >>>> wrote: >>>> > I have proposed my solution in one of the previous posts.Check the >>>> solution >>>> > there >>>> > >>>> > On Wed, Jul 6, 2011 at 10:10 PM, Tushar Bindal <tushicom...@gmail.com> >>>> > wrote: >>>> >> >>>> >> good job >>>> >> but how can this be done in one traversal as asked on the Adobe >>>> Interview >>>> >> Questions thread. >>>> >> >>>> >> >>>> >> >>>> >> On Wed, Jul 6, 2011 at 9:49 PM, Navneet Gupta <navneetn...@gmail.com> >>>> >> wrote: >>>> >>> >>>> >>> I think somebody on this thread has asked this question but i am not >>>> >>> able to find that. >>>> >>> >>>> >>> Question was if a string is like "my name is ram", then output should >>>> >>> be "ram is name my". >>>> >>> >>>> >>> Wrote the code for same, so sharing. >>>> >>> >>>> >>> #include<iostream> >>>> >>> #include<string> >>>> >>> using namespace std; >>>> >>> >>>> >>> void SwapStringChars(string &str, int pos1, int pos2) >>>> >>> { >>>> >>> char ch = str[pos1]; >>>> >>> str[pos1] = str[pos2]; >>>> >>> str[pos2] = ch; >>>> >>> } >>>> >>> >>>> >>> void reverseString(string &str, int left, int right) >>>> >>> { >>>> >>> for(int i = left ; i <= left + (right-left)/2 ; i++) >>>> >>> SwapStringChars(str, i, right + left -i)); >>>> >>> } >>>> >>> >>>> >>> void reverseWordsInString(string &str) >>>> >>> { >>>> >>> char space = ' '; >>>> >>> int len = str.length(); >>>> >>> int startIndex = 0, endIndex = 0; >>>> >>> while(endIndex < len - 1) >>>> >>> { >>>> >>> while(str[endIndex] != space && endIndex < >>>> len)endIndex++; >>>> >>> reverseString(str, startIndex, endIndex-1); >>>> >>> startIndex = endIndex; >>>> >>> while(str[startIndex] == space)startIndex++; >>>> >>> endIndex = startIndex; >>>> >>> } >>>> >>> } >>>> >>> >>>> >>> int main() >>>> >>> { >>>> >>> string str; >>>> >>> cout<<"\nEnter enter the string :"; >>>> >>> getline(cin,str); >>>> >>> >>>> >>> //Reverse whole string at once >>>> >>> reverseString(str, 0, str.length() - 1); >>>> >>> >>>> >>> //Reverse Individual words in string >>>> >>> reverseWordsInString(str); >>>> >>> cout<<str; >>>> >>> cin.get(); >>>> >>> return 0; >>>> >>> } >>>> >>> >>>> >>> -- >>>> >>> Regards, >>>> >>> Navneet >>>> >>> >>>> >>> -- >>>> >>> You received this message because you are subscribed to the Google >>>> Groups >>>> >>> "Algorithm Geeks" group. >>>> >>> To post to this group, send email to algogeeks@googlegroups.com. >>>> >>> To unsubscribe from this group, send email to >>>> >>> algogeeks+unsubscr...@googlegroups.com. >>>> >>> For more options, visit this group at >>>> >>> http://groups.google.com/group/algogeeks?hl=en. >>>> >>> >>>> >> >>>> >> >>>> >> >>>> >> -- >>>> >> Tushar Bindal >>>> >> Computer Engineering >>>> >> Delhi College of Engineering >>>> >> Mob: +919818442705 >>>> >> E-Mail : tushicom...@gmail.com >>>> >> Website: www.jugadengg.com >>>> >> >>>> >> -- >>>> >> You received this message because you are subscribed to the Google >>>> Groups >>>> >> "Algorithm Geeks" group. >>>> >> To post to this group, send email to algogeeks@googlegroups.com. >>>> >> To unsubscribe from this group, send email to >>>> >> algogeeks+unsubscr...@googlegroups.com. >>>> >> For more options, visit this group at >>>> >> http://groups.google.com/group/algogeeks?hl=en. >>>> > >>>> > >>>> > >>>> > -- >>>> > Saurabh Singh >>>> > B.Tech (Computer Science) >>>> > MNNIT ALLAHABAD >>>> > >>>> > >>>> > -- >>>> > You received this message because you are subscribed to the Google >>>> > Groups >>>> > "Algorithm Geeks" group. >>>> > To post to this group, send email to algogeeks@googlegroups.com. >>>> > To unsubscribe from this group, send email to >>>> > algogeeks+unsubscr...@googlegroups.com. >>>> > For more options, visit this group at >>>> > http://groups.google.com/group/algogeeks?hl=en. >>>> > >>>> >>>> >>>> >>>> -- >>>> Regards, >>>> Navneet >>>> >>>> -- >>>> You received this message because you are subscribed to the Google Groups >>>> "Algorithm Geeks" group. >>>> To post to this group, send email to algogeeks@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> algogeeks+unsubscr...@googlegroups.com. >>>> For more options, visit this group at >>>> http://groups.google.com/group/algogeeks?hl=en. >>>> >>>> >>> >>> >>> -- >>> Tushar Bindal >>> Computer Engineering >>> Delhi College of Engineering >>> Mob: +919818442705 >>> E-Mail : tushicom...@gmail.com >>> Website: www.jugadengg.com >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Algorithm Geeks" group. >>> To post to this group, send email to algogeeks@googlegroups.com. >>> To unsubscribe from this group, send email to >>> algogeeks+unsubscr...@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/algogeeks?hl=en. >>> >>> >> >> >> -- >> *Piyush Sinha* >> *IIIT, Allahabad* >> *+91-8792136657* >> *+91-7483122727* >> *https://www.facebook.com/profile.php?id=100000655377926 * >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Algorithm Geeks" group. >> To post to this group, send email to algogeeks@googlegroups.com. >> To unsubscribe from this group, send email to >> algogeeks+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/algogeeks?hl=en. >> >> > > > > -- > Regards, > Navneet > > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to algogeeks@googlegroups.com. > To unsubscribe from this group, send email to > algogeeks+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/algogeeks?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.