12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /* queue.h -- interface for a queue */
- #ifndef _QUEUE_H_
- #define _QUEUE_H_
- #include <stdbool.h>
- // INSERT ITEM TYPE HERE
- // FOR EXAMPLE,
- //typedef int Item; // for use_q.c
- // OR typedef struct item {int gumption; int charisma;} Item;
- // OR (for mall.c)
- /**/
- typedef struct item
- {
- long arrive; // the time when a customer joins the queue
- int processtime; // the number of consultation minutes desired
- } Item;
- /**/
-
- #define MAXQUEUE 10
- typedef struct node
- {
- Item item;
- struct node * next;
- } Node;
- typedef struct queue
- {
- Node * front; /* pointer to front of queue */
- Node * rear; /* pointer to rear of queue */
- int items; /* number of items in queue */
- } Queue;
- /* operation: initialize the queue */
- /* precondition: pq points to a queue */
- /* postcondition: queue is initialized to being empty */
- void InitializeQueue(Queue * pq);
- /* operation: check if queue is full */
- /* precondition: pq points to previously initialized queue */
- /* postcondition: returns True if queue is full, else False */
- bool QueueIsFull(const Queue * pq);
- /* operation: check if queue is empty */
- /* precondition: pq points to previously initialized queue */
- /* postcondition: returns True if queue is empty, else False */
- bool QueueIsEmpty(const Queue *pq);
- /* operation: determine number of items in queue */
- /* precondition: pq points to previously initialized queue */
- /* postcondition: returns number of items in queue */
- int QueueItemCount(const Queue * pq);
- /* operation: add item to rear of queue */
- /* precondition: pq points to previously initialized queue */
- /* item is to be placed at rear of queue */
- /* postcondition: if queue is not empty, item is placed at */
- /* rear of queue and function returns */
- /* True; otherwise, queue is unchanged and */
- /* function returns False */
- bool EnQueue(Item item, Queue * pq);
- /* operation: remove item from front of queue */
- /* precondition: pq points to previously initialized queue */
- /* postcondition: if queue is not empty, item at head of */
- /* queue is copied to *pitem and deleted from */
- /* queue, and function returns True; if the */
- /* operation empties the queue, the queue is */
- /* reset to empty. If the queue is empty to */
- /* begin with, queue is unchanged and the */
- /* function returns False */
- bool DeQueue(Item *pitem, Queue * pq);
- /* operation: empty the queue */
- /* precondition: pq points to previously initialized queue */
- /* postconditions: the queue is empty */
- void EmptyTheQueue(Queue * pq);
- #endif
|