#include "queue.h" #include #include struct QueueStruct { int first; int last; int size; ElementType elems[MAX_QUEUE_SIZE]; }; void initQueue(QueueType* queue) { (*queue) = malloc(sizeof(QueueType)); if (*queue) { (*queue)->first = 0; (*queue)->last = 0; (*queue)->size = 0; } else { printf("Error: couldn't allocate memory for queue!\n"); } } void enqueue(QueueType queue, ElementType element) { if (queue->size < MAX_QUEUE_SIZE-1) { queue->elems[queue->last] = element; queue->last = (queue->last+1) % MAX_QUEUE_SIZE; queue->size++; } else { printf("Error: queue overflow\n"); exit(0); } } void dequeue(QueueType queue, ElementType* element) { if (queue->size > 0) { (*element) = queue->elems[queue->first]; queue->first = (queue->first+1) % MAX_QUEUE_SIZE; queue->size--; } else { printf("Error: queue underflow\n"); exit(0); } } int queueSize(QueueType queue) { return queue->size; } void printQueue(QueueType queue, void (*printElement)(ElementType)) { int i; printf("QUEUE CONTAINS:\n"); i = queue->first; while (i != queue->last) { printElement(queue->elems[i]); i = (i+1) % MAX_QUEUE_SIZE; } printf("--------------------------------\n"); }