Fundamentals
Arrays, strings, matrices and linked lists — the building blocks everything else is made of.
A fixed-size block of contiguous memory holding elements of one type, addressable by index in O(1).
An array that grows automatically by doubling its capacity, giving amortized O(1) append with O(1) indexed access.
An immutable (in most languages) sequence of characters stored as an array, with its own family of matching and counting algorithms.
A rectangular grid of values indexed by (row, column), stored as an array of rows or one flattened row-major array.
A sequence of nodes where each node stores a value and a pointer to the next, giving O(1) insertion/deletion at a known position but O(n) access by index.
The simplest linked list: each node has a value and one `next` pointer, so traversal is forward-only and deletion needs the predecessor.
A linked list whose nodes carry both `prev` and `next` pointers, so any node can be removed in O(1) given just its reference and the list can be walked in both directions.
A linked list whose last node points back to the first, so traversal wraps around and a single tail pointer gives O(1) access to both ends.