#include #include #include "fifo.h" size_t fifo_size(struct fifo *fifo) { return fifo->size; } void fifo_push(struct fifo *fifo, int elt) { struct list *new = malloc(sizeof(struct list)); if (new == NULL) { return; } new->data = elt; if (fifo_size(fifo) == 0) { fifo->head = new; } new->next = NULL; if (fifo_size(fifo) != 0) { fifo->tail->next = new; } fifo->tail = new; fifo->size++; } int fifo_head(struct fifo *fifo) { return fifo->head->data; } void fifo_pop(struct fifo *fifo) { if (fifo_size(fifo) == 0) { return; } if (fifo_size(fifo) == 1) { free(fifo->head); fifo->head = NULL; fifo->tail = NULL; return; } struct list *tmp = fifo->head->next; free(fifo->head); fifo->head = tmp; fifo->size--; } void fifo_print(const struct fifo *fifo) { for (struct list *l = fifo->head; l; l = l->next) { printf("%d\n", l->data); } }