A linked list is a container class for objects of all types. Every object (or "node") has a pointer to the next object in the list. In a doubly-linked list, every object in the list also has a pointer to the previous node in the list. Using these pointers, you can "walk" through the list in both directions.
The "Next" pointer of the list's last node is NIL. The "Prev" pointer of the list's first node is NIL. The List object contains a pointer to the first and last node of the list. And the list object is responsible for maintaing the list: inserting new nodes (and thereby setting all next and prev pointers correctly), deleting nodes, scanning through the list, etc.
Advantages of doubly linked lists over the TList that comes with Delphi: