This overhead becomes more significant on 64bit OS's. Doubly linked lists fix that problem, while sacrificing another pointer for every element. Modern computing needs a better data storage structure with the same level of flexibility and power at more reasonable costs. Quick access to nearby elements in the data structure, specifically for any iterating process like looping. Reasonably low memory overhead.
Chains satisfy the first three of the above needs.
The concept that will give a large space savings for a low performance hit is a simple variant on a linked list. Instead of having one element for each node in the linked list, have multiple ones. A chain consists of a root container and list of arrays, called links. The root container would maintain a pointer to the head and tail of a list of links, a current pointer and index to an element of a link, an integer k describing the size of each link, and an integer n describing the total number of elements in the data structure. Each link consists of a back pointer, a next pointer, an array of size k , and an integer describing the number of elements used in the link.