#include #include #include "dlist.h" struct dlist *dlist_init(void) { struct dlist *res = malloc(sizeof(struct dlist)); if (res == NULL) return NULL; res->size = 0; res->head = NULL; res->tail = NULL; return res; } int dlist_push_front(struct dlist *list, int element) { if (element < 0) return 0; struct dlist_item *new = malloc(sizeof(struct dlist_item)); if (new == NULL) return 0; new->data = element; new->next = list->head; new->prev = NULL; if (list->size == 0) list->tail = new; else list->head->prev = new; list->head = new; list->size++; return 1; } void dlist_print(const struct dlist *list) { if (list->size == 0) return; for (struct dlist_item *i = list->head; i != list->tail; i = i->next) { printf("%d\n", i->data); } printf("%d\n", list->tail->data); } int dlist_push_back(struct dlist *list, int element) { if (element < 0) return 0; struct dlist_item *new = malloc(sizeof(struct dlist_item)); if (new == NULL) return 0; new->data = element; new->prev = list->tail; new->next = NULL; if (list->size == 0) list->head = new; else list->tail->next = new; list->tail = new; list->size++; return 1; } size_t dlist_size(const struct dlist *list) { return list->size; }