Abstract
Developed in 1955 by Allen Newell, Cliff Shaw, and Herbert A. Simon at RAND Corporation, the linked list is a dynamically allocated data structure that grows as needed in memory. It bypasses the contiguous allocation constraints of standard Array Lists by linking scattered node containers via explicit system pointers.
- Category: Dynamic Linked Structures
- Core Node Anatomy: Formed of an internal data value paired with directional address pointers.
- Entry Constraints: Direct access is restricted to boundary
headandtailpointers; finding interior elements requires sequential traversal.
Structural Variations
Linked Lists are configured into two primary architectural variants based on pointer depth:
| Architectural Feature | Singly-Linked List | Doubly-Linked List |
|---|---|---|
| Pointers per Node | 1 (Points exclusively forward to the next node) | 2 (Points symmetrically to next and previous nodes) |
| Traversal Direction | Unidirectional (Forward only) | Bidirectional (Forward and backward) |
| Termination Bounds | Final node’s next reference points to NULL | head.prev and tail.next point to NULL |
Structural Illustrations


Access Limitations Complexity
If direct structural references are limited to
headortailmarkers, finding a node inside a Linked List containing elements incurs an linear time complexity, as the system must step through the pointer chain node-by-node.
Core Operations
Searching & Value Traversal
Finding an item or resolving an index requires sequential traversal from boundary references.
- Time Complexity: worst-case.
- Optimization: In a Doubly-Linked List, if the requested index sits closer to the trailing margin, the routine can start at the
tailand step backward to halve traversal overhead.
Algorithm 15 Linked List Search Algorithms
procedure FindByElement()
while do
if then
return
return
procedure FindByIndex()
if or then
return
for do
return current
Element Insertion
Inserting an element requires locating the node preceding the target position and updating neighboring pointers to splice in the new node container.
- Time Complexity: at boundary margins (
head/tail); for internal positions due to the traversal cost of locating the insertion site.

Algorithm 16 Doubly Linked List Insertion
procedure Insert()
if then
else if then
else
for do
Element Removal
Bypasses a targeted node by linking its preceding and succeeding neighbors directly to each other.
- Time Complexity: at boundary edges; for internal nodes.

Algorithm 17 Doubly Linked List Removal
procedure Remove()
if then
if then
else
for do
Memory Cleanup Realities
In the removal diagram, the decoupled node remains stranded in system space. From a strict data structure interface perspective, this does not break functionality because the item is unreachable. However, in non-garbage-collected environments (like C++), you must explicitly delete the unlinked node to avoid memory leaks.
Architectural Comparison Matrix
| Technical Feature | Linked List Implementation | Array List Implementation |
|---|---|---|
| Access / Search Cost | linear pointer sequence traversal | random access / sorted binary search |
| Head Insert / Delete | quick pointer reassignment swap | linear data block shifting |
| Tail Insert / Delete | direct pointer assignment | Amortized capacity shifting |
| Memory Footprint | Dynamic growth layout; no empty pre-allocated slots | Bounded continuous chunks; can leave unused margins |
| Pointer Overhead | Higher cost due to storing address references | Minimal cost; tracks data elements only |