Linked lists use dynamic memory allocation where each node contains data and a pointer to the next node, making them ideal for collections with frequent size changes. Adding or removing elements only requires updating pointers, making these operations O(1) at known positions.