40 lines
875 B
C
40 lines
875 B
C
#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 |