PriorityQueue.h
#ifndef __PRIORITYQUEUE_H__
#define __PRIORITYQUEUE_H__
#include"Heap.h"
typedef struct PriorityQueue
{
Heap hp;
}PriorityQueue;
void InitPriorityQueue(PriorityQueue* q);
void PushPriorityQueue(PriorityQueue* q, HPDataType data);
void PopPriorityQueue(PriorityQueue* q);
HPDataType TopPriorityQueue(PriorityQueue* q);
int SizePriorityQueue(PriorityQueue* q);
int EmptyPriorityQueue(PriorityQueue* q);
#endif //__PRIORITYQUEUE_H__
PriorityQueue.c
#define _CRT_SECURE_NO_WARNINGS 1
#include"PriorityQueue.h"
void InitPriorityQueue(PriorityQueue* q)
{
assert(q);
InitHeap(q);
}
void PushPriorityQueue(PriorityQueue* q, HPDataType data)
{
assert(q);
InsertHeap(&(q->hp), data, q->hp._compare);
}
void PopPriorityQueue(PriorityQueue* q)
{
assert(q);
RemoveHeap(&(q->hp), q->hp ._compare);
}
HPDataType TopPriorityQueue(PriorityQueue* q)
{
assert(q);
return q->hp._hp[0];
}
int SizePriorityQueue(PriorityQueue* q)
{
assert(q);
return q->hp._size;
}
int EmptyPriorityQueue(PriorityQueue* q)
{
return q->hp._size;
}
test.c
#define _CRT_SECURE_NO_WARNINGS 1
#include"PriorityQueue.h"
int main()
{
PriorityQueue q;
InitPriorityQueue(&q);
PushPriorityQueue(&q, 4, (&q)->hp._compare);
HPDataType ret = SizePriorityQueue(&q);
PopPriorityQueue(&q);
ret = SizePriorityQueue(&q);
return 0;
}