#ifndef _QUEUE_H #define _QUEUE_H #include "data.h" // helpful #defines #include "list.h" // queue relies on list to work // (which relies on node) struct queue { List *data; // pointer to list containing data Node *front; // pointer to node at front of queue Node *back; // pointer to node at back of queue uli buffer; // maximum queue size (0 is unbounded) }; typedef struct queue Queue; // because we deserve nice things code_t mkqueue(Queue **, uli ); // create new queue (of max size) code_t cpqueue(Queue *, Queue **); // create a copy of an existing queue code_t rmqueue(Queue ** ); // clear and de-allocate a queue code_t purge (Queue ** ); // clear and de-allocate an existing queue code_t enqueue(Queue **, Node * ); // add new node to the back of queue code_t dequeue(Queue **, Node ** ); // take off node at front of queue #endif