Last Updated: May 26, 2026
Many systems need an ordered in-memory structure for lookups, updates, range scans, and iteration.
A Skip List is a sorted linked list with probabilistic higher-level lanes. Those lanes let searches skip over large parts of the list while keeping updates local.
Skip lists provide expected O(log n) operations, not deterministic worst-case bounds. They are useful when simplicity, range scans, and concurrency-friendly updates matter more than strict balancing guarantees.
Suppose you are building an in-memory index for a storage engine. New writes arrive continuously. Reads need to find individual keys, and flushes need to scan keys in sorted order before writing immutable files to disk.
The structure needs fast get(key), put(key, value), delete(key), and scan(start_key, end_key) operations.
A plain linked list keeps sorted order, but search is linear:
A balanced tree gives logarithmic operations, but insertions and deletions may rotate nodes to preserve balance. That is fine in many systems. It becomes harder when several threads update the structure concurrently, range scans need stable ordered traversal, the implementation must stay small enough to audit, or the structure sits on a hot write path.
Skip lists take a different approach: instead of enforcing balance with rotations, they use randomness to build a hierarchy of shortcuts.