GSoC-2011 project:: Containers

spir denis.spir at gmail.com
Wed Mar 30 11:30:37 PDT 2011


On 03/30/2011 05:30 PM, Steven Schveighoffer wrote:
>> Do you mean removal of an already accessed node/value? If yes, then removal
>> can effectively be O(1), but to first get the access (here, via a pointer)
>> one needs O(n) traversing the list in any case.
>
> Of course.  With SList, you need O(n) to get to the element, and then O(n) to
> remove it once you find it ;)

I guess you refer to the fact that, in a slist, as opposed to doubly linked 
list, one misses the 'previous' slot needed to insert or remove. Thus, one must 
re-traverse to reach it. Is it the issue you're evoking?
There is a trick to avoid that, wrote it once long ago (since then I have, like 
you, only used doubly-linked ones). I guess the point is, while traversing to 
search a given element (by index, value, pattern matching or whatever) to 
constantly keep track of the previously visited node. Thus, when you get there, 
you have the needed trio (previous/current/next) available for whatever operation.

Denis
-- 
_________________
vita es estrany
spir.wikidot.com



More information about the Digitalmars-d mailing list