a implementation of double linked list