double linked list (struct dlist)