This implements a double linked list library ADT (abstract data type). The list can contain arbitrary data or pointers. It can allocate memory for the data or just store a pointer. Functions are included to walk the list, and to add and remove items.