Linked lists are a dynamic data structure that store elements sequentially using pointers. Each element contains data and a pointer to the next element. This allows efficient insertion and removal of elements but inefficient random access. There are different types of linked lists including singly, doubly, and circularly linked lists. Linked lists offer more flexible memory allocation than arrays but have higher overhead and slower access times.