I had a similar problem.  I wound up putting a boolean in the structure that 
made up the linked list, and just flagging it as true in the loop if it 
needed to be deleted.  Then after that loop, I go through a second "normal" 
loop and remove all of those that are flagged.

On Tuesday 21 October 2003 01:13 pm, Jason Gauthier wrote:
> With the exception that what's removed might not be in order.
> Could be at the front, middle and end of the list.
>
> This would cause items to get skipped in the loop.  If there is no
> practical way I can work around it.
>
> > -----Original Message-----
> > From: Jed Yang [mailto:[EMAIL PROTECTED]
> > Sent: Tuesday, October 21, 2003 10:44 AM
> > To: Jason Gauthier; [email protected]
> > Subject: Re: Removing linked lists items.
> >
> >
> > Maybe you can let the function pass back the next k.
> > for( k = list; k; k = k_next )
> > {
> >  k_next = multiple_remove( k );
> > }
> > Something in those lines might work.
> >
> > Htam
> > ----- Original Message -----
> > From: "Jason Gauthier" <[EMAIL PROTECTED]>
> > To: <[email protected]>
> > Sent: 2003.10.21 06:42
> > Subject: Removing linked lists items.
> >
> > > Greetings.
> > >
> > >  Seems like a dumb question, but it's not what you would think.
> > >
> > > I am trying to remove items from a linked list.  Normally,
> >
> > this is not
> >
> > > a problem for me.
> > >
> > > for (k=list; k!=NULL; k=k_next) {
> > >   k_next = k->next;
> > >
> > >    /* code code code */
> > > }
> > >
> > > Is fine for removing one entry.  However, I have a function
> >
> > that might
> > cause
> >
> > > several items in the list to be removed, including what k_next is
> > > pointing at.  This makes k_next start looping through the k_free
> > > linked list. Definitely not what I want.
> > >
> > > Any suggestions?
> > >
> > > Jason
> > >
> > > --
> > > ROM mailing list
> > > [email protected]
> > > http://www.rom.org/cgi-bin/mailman/listinfo/rom


Reply via email to