>
> > So I was thinking, what would be the SAFEST way to implement linked
> > lists, and to iterate through the list without losing place, when there
> > is the chance that the current, previous, next, or any other item in the
> > list could be removed in mid-iteration....
> The method below with the "dirty" flag would be the best method for this.
> I have used a method before called tombstoning. It works in the following
> manner: If you want something to be considered removed from the list, set
> one of the values to a value it won't take on under normal circumstances.
> '-1' is a good value. If you are trying to read from the list and
> encounter a tombstone, just skip it. Now, if you are afraid of having to
> many tombstones, just write a procedure to remove tombstones when safe to
> do so. Otherwise, you can just insert over the top of things that have
> been tombstoned.
Beat me to it - was going to say - instead of freeing within the
list, just set a value to one that doesn't make sense. The next time you
run through that list, immediately before it, run a cleaning function that
frees up and re-orders the list.
PjD
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST