最小二叉堆(binary heap)实现优先队列,原文地址:
extern PriorityQueue *pqueue_init(int length);
extern int pqueue_is_empty(PriorityQueue *queue);
extern int pqueue_is_full(PriorityQueue *queue);
extern int pqueue_push(PriorityQueue *queue, int key, Song *song);
extern QNode *pqueue_top(PriorityQueue *queue); // 获取顶部元素
extern int pqueue_pop(PriorityQueue *queue); // 释放顶部元素
extern int pqueue_decrease(PriorityQueue *queue, int index, int delta);
extern int pqueue_increase(PriorityQueue *queue, int index, int delta);
extern int pqueue_delete(PriorityQueue *queue, int index);
extern PriorityQueue *pqueue_build(QNode *list, int length);
extern void pqueue_traverse(PriorityQueue *queue);
extern int pqueue_clear(PriorityQueue *queue);