A linked list is a linear data structure where elements are linked using pointers. Each element contains a data field and a pointer to the next node. Linked lists allow for efficient insertion and deletion, but random access is slow. There are several types of linked lists including singly linked, doubly linked, and circular linked lists. Singly linked lists only traverse in one direction while doubly linked lists can traverse forwards and backwards. Circular linked lists connect the first and last nodes so the list has no end.