Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

traditional linked list:

{ l * next; x * data; } or { l * next; x data; }

array-based linked list would be an array where each element also has the index (or pointer) of the next element.

{ int next; x data; } [1000];

Now all your elements are packed together in a memory space that you can control.

I think of (array) deque as something that allows me to operate on the front and back, not necessarily traverse and insert/delete in the middle.



This strikes me as heap management more than a 'linked list implemented as an array'. The heap itself is, after all, equivalent to a giant array.

But it doesn't get you the same locality as an array at any rate. The idea is that, assuming your elements are smaller than a cache line and your array as a whole is larger, what you're avoiding with an array is N/M cache misses while you traverse rather than potentially (or even probably, depending on various other factors) having a cache miss on every nextItem(). You'll also miss more often because of the expansion of the elements.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: