Skip to main content

List Variants

List-Based Linear Data Structures

TypeDescriptionKey CharacteristicTypical Use CaseAccess PatternMemory BehaviorNotes
Linked ListNodes linked in sequenceDynamic sizeGeneral-purpose listsSequentialNon-contiguousSingle pointer per node
Doubly Linked ListTwo-way linked nodesBidirectional traversalNavigation systemsSequentialNon-contiguousExtra memory per node
Array ListList backed by arrayFast random accessDynamic collectionsIndexedContiguousCostly insertions
Association ListKey–value pairs in listSimple mappingSmall dictionariesSequentialNon-contiguousLinear search
Self-organizing ListReorders on accessAdaptive performanceCachingSequentialNon-contiguousMove-to-front heuristic
Skip ListLayered linked listLogarithmic searchOrdered sets/mapsSequential + skipNon-contiguousProbabilistic structure
Unrolled Linked ListNodes store blocksFewer pointersMemory optimizationBlock-basedSemi-contiguousCache-friendly
VListVersioned listPersistent structureFunctional programmingSequentialNon-contiguousImmutable versions
Conc-tree ListTree-based listFast concatenationText processingIndexedTree-basedRope-like behavior
XOR Linked ListXOR of addressesMemory efficientLow-level systemsSequentialNon-contiguousHard to debug
ZipperFocused list traversalEfficient editsFunctional editingCursor-basedNon-contiguousMaintains context
Doubly Connected Edge ListEdge-centric listGraph topologyComputational geometryPointer-basedNon-contiguousUsed in planar graphs
Difference ListList as functionFast appendLogic programmingSequentialAbstractUsed in Prolog
Free ListTracks unused nodesMemory reuseMemory allocatorsSequentialNon-contiguousInternal structure