#ifndef QUEUE_H #define QUEUE_H struct queue; typedef struct queue *queue; extern queue queue_create(void); extern void queue_enq(queue q, void *element); extern int queue_empty(queue q); /* Precondition: the queue must not be empty as reported by queue_empty() The front element of the queue is returned and deleted from the queue */ extern void *queue_deq(queue q); /* return a new independent queue with the same elements as q */ extern queue queue_copy(queue q); #endif