Data Structures, Explained Like You're Five: Doubly Linked Lists
Picture a train. Each car is hooked to the car in front of it and the car behind it. Because of those two couplings, you can walk through the train in either direction. That's a doubly linked list: a linked list where every node points both forward and backward.
The whole idea in one sentence
Each node keeps two arrows — "next" and "prev" — so you can move forward or backward, and you can unhook a node knowing both of its neighbors.
Watch it happen
Hit Play. We build the train with arrows pointing both ways, walk it backward from the tail (impossible in a singly list), then delete a middle car — which now means fixing two arrows, not one.
Why it matters
That backward pointer is exactly what powers things you use every day: browser back/forward, undo/redo, and LRU caches. The interview wrinkle: the extra prev arrow costs more memory and means every insert and delete has to update twice as many pointers — so you only pay for it when you actually need to move both directions.
One extra arrow per node buys two-way movement and O(1) deletion when you already hold the node — at the cost of more pointers to keep correct.