Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.c++.moderated    |    Moderated discussion of C++ superhackery    |    33,346 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 32,906 of 33,346    |
|    =?ISO-8859-1?Q?=D6=F6_Tiib?= to alexo    |
|    Re: insert [sorted] a node in a linked l    |
|    10 Mar 13 15:40:27    |
   
   From: ootiib@hot.ee   
      
   On Sunday, 10 March 2013 09:48:20 UTC+2, alexo wrote:   
   > Il 09/03/2013 15:52, �� Tiib ha scritto:   
   > > On Friday, 8 March 2013 17:20:30 UTC+2, alexo wrote:   
   > >> I'd like to insert a node in a linked list in a sorted manner. from   
   > >> smaller to bigger   
   > >   
   > > Can you tell us the reason why you use linked list for sorted   
   > > container? I would likely review such usage as a design defect.   
   >   
   > It's for testing my programming skills.   
   > I read in the book "teach yourself C++ in 21 days" that the author did so   
   > in one of his lessons [on appendix E, for the precision].   
   > So I thought I could handle a similar thing with my code. That's it.   
      
   Sounds like "drop 50 pounds of weight in 21 days". Can be done but result   
   might be not that nice.   
      
   > What I can't figure out is how to do as better as I did,   
   > so I asked you an help. What's wrong with my code?.   
      
   Since it is sorted container ... move unsorted inserts like push()   
   and push_back() to private.   
      
   Learn to use debugger.   
      
   Lets look at your code:   
      
   > while(temp != 0)   
   > {   
      
   Why while is better than if? It does only one cycle   
      
   > if( value > temp->getValue() )   
   > {   
   > Node * new_node = new Node(value);   
   > insert(new_node, temp);   
   > break;   
      
   It breaks cycle here ...   
      
   > }   
   > else   
   > {   
   > push(value);   
   > break;   
      
   ... and here ...   
      
   > }   
   > temp = temp->next;   
      
   ... and above line is no way reachable.   
      
   > }   
      
   So ... the error is somewhere here, you probably wanted to do something   
   else entirely.   
      
   Feels you over-engineered and so got confused in resulting mess   
   of classes without clear responsibilities. Your list has unneeded   
   first element (Head). It has no responsibilities. Make the class   
   Linked_List to take over the unexisting responsibilities of Head.   
   To have such Head you have split classes Node and List_Element.   
   Merge them back.   
      
      
   --   
    [ See http://www.gotw.ca/resources/clcm.htm for info about ]   
    [ comp.lang.c++.moderated. First time posters: Do this! ]   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca