#ifndef QUEUE_H
#define QUEUE_H

typedef struct queue queue_t;

queue_t *queue_init(void); // Initializes an empty queue
void queue_free(queue_t *q); // Frees memory used by queue q
void queue_push(int x, queue_t *q); // Adds an element x to the end of the queue q
int queue_pop(queue_t *q); // Removes and returns the element at the front of the queue q

#endif
