#ifndef DLIST_H #define DLIST_H #include struct node{ int data; struct node *next; struct node *prev; }; struct dlist{ size_t size; struct node *head; struct node *tail; }; struct dlist *dlist_init(void); void dlist_clear(struct dlist *list); size_t dlist_length(struct dlist *l); void dlist_push_front(struct dlist *l, int data); void dlist_push_back(struct dlist *l, int data); void dlist_remove(struct dlist *list, int data); struct dlist *dlist_from_str(char *str); struct node *dlist_find(struct dlist *list, int data); void dlist_concat(struct dlist *l1, struct dlist *l2); void dlist_insert(struct dlist *l, int data, int i); #endif