[Q] LinkedList

Romain Robbes romain.robbes at lu.unisi.ch
Mon Mar 21 11:16:12 UTC 2005


Something like this should work:

LinkedList>>at: n
     link := self items first.
     n - 1 timesRepeat: [link := lint nextLink].
    ^ link

Romain

On Mar 21, 2005, at 12:05 PM, Matej Kosik wrote:

> Matej Kosik wrote:
>> Hello,
>> LinkedList does not respond to
>>     second
>>     third
>>     ...
>>     at:
>> messages. Do you think that it makes sense? I would expect something 
>> else. Is this a purpose or an omission?
>
> Actually, the LinkedList responds to those messages, but those methods 
> fail with an error
>
> 	LinkedLists are not indexable
>
> I think that all sequenceable collections should be indexable, even if 
> in this particular case the implementation of this operation wouldn't 
> have constant time complexity as it is in case of arrays.
>
> When such a functionality misses, and we still need to refer to 
> particular linked list elements, it results in a awkward code like:
>
> 	self should: [(link := mailbox items first) == mail1].
> 	self should: [(link := link nextLink) == mail2].
> 	self should: [(link := link nextLink) == mail3].
> 	self should: [(link := link nextLink) == slit1].
> 	self should: [(link := link nextLink) == mail4].
> 	self should: [(link := link nextLink) == slit2].
> 	self should: [(link := link nextLink) == mail5].
> 	self should: [(link := link nextLink) == mail6].
> 	self should: [(link := link nextLink) == slit3].
>
> Instead of its straightforward and clear variant:
>
>
> 	self should: [(mailbox items at: 1) == mail1].
> 	self should: [(mailbox items at: 2) == mail2].
> 	self should: [(mailbox items at: 3) == mail3].
> 	self should: [(mailbox items at: 4) == slit1].
> 	self should: [(mailbox items at: 5) == mail4].
> 	self should: [(mailbox items at: 6) == slit2].
> 	self should: [(mailbox items at: 7) == mail5].
> 	self should: [(mailbox items at: 8) == mail6].
> 	self should: [(mailbox items at: 9) == slit3].
>
>
> -- 
>  http://altair.dcs.elf.stuba.sk/wiki/Kosik/Main
>   icq: 300133844
> phone: 0910-993-245
>




More information about the Squeak-dev mailing list