Messages in this thread | | | Date | Fri, 31 Oct 2008 09:18:06 -0600 | From | Tim Gardner <> | Subject | Re: [RFC] B+Tree library |
| |
Johannes Berg wrote: >> +static inline size_t btree_visitorl(struct btree_headl *head, long opaque, >> + visitorl_t func2) >> +{ >> + return btree_visitor(&head->h, &btree_geo32, opaque, visitorl, func2); >> +} > > Incidentally, do you think it would be possible to implement a kind of > > btree_for_each_entry(e, ...) { > do something with e > } > > macro or function/macro combination? You seem to be doing a recursive > walk across the tree, would it be useful to have a linked list at the > lowest level of nodes to be able to iterate more easily? > > johannes
What would you expect to be the behavior if you remove 'e' ? That might cause the tree to get re-ordered. Do you restart the list traversal?
I had a similar issue once with a hash table algorithm where you could either access elements with a hash key, or efficiently traverse the hash table using a linked list of elements. The solution wasn't too difficult in that case because removing an element didn't cause the table to get re-ordered.
rtg -- Tim Gardner tim.gardner@canonical.com
| |