dequeue deq_create(){ dequeue q = (dequeue)malloc(sizeof(struct _dequeue)); q -> head = dcons(NULL, NULL, NULL); q -> tail = dcons(NULL, NULL, NULL); q -> head -> next = q -> tail; q -> tail -> prev = q -> head; return q; }
dqueue dq_create(void) { dqueue q = (dqueue)malloc(sizeof(struct _dqueue)); q -> sentinel = dcons(NULL, NULL, NULL); q -> sentinel -> next = q -> sentinel -> prev = q -> sentinel; return q; }
dlist create_and_link(void *element, dlist prev, dlist next){ dlist temp = dcons(element, prev, next); prev -> next = temp; next -> prev = temp; return temp; }