INADA Naoki added the comment:

>  I'm unclear about whether you understand and acknowledge why the 
> doubly-linked list was chosen and what kind of workloads it supports (we 
> didn't choose it because it was either convenient or fun, we chose it because 
> it was an algorithmically correct way of supporting arbitrary deletion, 
> move-to-front, move-to-back, pop-first, and pop-last operations all of which 
> have legitimate use cases).

Arbitrary deletion: New and current implementation has same complexity, because 
current implementation relying on dict deletion.  Only difference is current 
implementation need to remove item from link list, not only dict.

move-to-front, move-to-back: Current implementation is worst case O(1) and new 
implementation is amortized O(1), like insertion.

pop-first, pop-last: Current implementation is worst case O(1).  New 
implementation is typical case (when dict is dense) O(1).  When mixed with 
arbitrary deletion operation (dict is sparse), it's become amortized O(1).

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue31265>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to