Linked lists are dynamic data structures that can change size during program execution. Each element contains a data field and a pointer to the next element. Elements are linked together using these pointers. There are several types of linked lists including singly linked, doubly linked, circular linked lists. Basic operations on linked lists include traversing the list, inserting elements, and deleting elements. Linked lists are suitable when the number of elements is unknown or the list needs to be rearranged efficiently.