#ifndef PRIORITY_QUEUE_H #define PRIORITY_QUEUE_H #define PRIORITY_QUEUE_INIT_GROWTH_FACT 2 #define priority_queue(pq, compare) priority_queue* pq = newPriority_queue(compare); typedef struct priority_queue{ void** at; int capacity; int size; int growthFactor; void (*toString)(); bool (*compare)(); } priority_queue; priority_queue* newPriority_queue(bool (*compare)()); void priority_queueResize(priority_queue* v, int capacity); void priority_queueClear(priority_queue* pq); void priority_queuePush(priority_queue* pq, void* element); void priority_queueFree(priority_queue* pq); void priority_queueShrink_to_fit(priority_queue* pq); bool priority_queueIsEmpty(priority_queue* pq); void* priority_queueTop(priority_queue* pq); void priority_queuePop(priority_queue* pq); void priority_queuePrint(priority_queue* pq); #endif