When I ran a program that had a list of integers with 5000000 elements in it, I was surprised to find that it used 118MB of memory, even when the *only* thing done by the program is the creation of the list.
As far as I understand, each node in a list contains an element as well as pointers to both the following and preceding elements. Both an integer and a pointer to an integer are 4 bytes, so one would think that a node would use up 12 bytes, and therefore a list with 5M elements should use 60MB, not 118MB.
So why do lists seem to use nearly twice the amount of memory that they should be using?