Double linked lists are WONDERFUL! I love these things.
First off, do you know what a linked list is? I'll tell ya, because I like them so much.
A "Linked List" is an object that contains some data, and also a pointer to an object who's type is itself. (That is to say, if I call the object "myObject", then this object contains a pointer who's type is "myObject".)
Here is a quick example:
A double linked list is similar, except there are two such pointers. These pointers are generally named "prev" (or previous) and "next".
struct myObject *next;
Think of each object as a link in a chain. There is one before it, and one after it. If it is just a length of chain, think of how it hangs from your hand. Your hand anchors it in place (from falling due to gravity, blah blah), and each link connects to the next in the chain length, until the last one, who doesn't have a next link.
Very simple concept.