#include #include "queue.h" #include "dllist.h" typedef struct { Dllist *data; int size; } Queue; void *new_queue() { Queue *new_q; new_q = (Queue *)malloc(sizeof(Queue)); new_q->data = new_dllist(); new_q->size = 0; return new_q; } void free_queue(void *queue) { Queue *q = (Queue *)queue; free_dllist(q->data); free(q); } void queue_enqueue(void *queue, void *value) { Queue *q = (Queue *)queue; dll_append(q->data, value); q->size++; } void *queue_dequeue(void *queue) { Queue *q = (Queue *)queue; if (queue_empty(q)) return NULL; Dllist_Node *first_node = dll_first(q->data); void *save_val = dll_val(first_node); dll_delete_node(first_node); q->size--; return save_val; } void *queue_peek(void *queue) { Queue *q = (Queue *)queue; void *first_node = dll_first(q->data); return dll_val(first_node); } int queue_empty(void *queue) { return (queue_size(queue) == 0); } int queue_size(void *queue) { Queue *q = (Queue *)queue; return q->size; }