0001 #include "Vector/Vector.h" //借助多重继承机制,基于向量 0002 #include "PQ/PQ.h" //按照优先级队列ADT实现的 0003 template <typename T> struct PQ_ComplHeap : public PQ<T>, public Vector<T> { //完全二叉堆 0004 PQ_ComplHeap() { } //默认构造 0005 PQ_ComplHeap ( T* A, Rank n ) { copyFrom ( A, 0, n ); heapify ( _elem, n ); } //批量构造 0006 void insert ( T ); //按照比较器确定的优先级次序,插入词条 0007 T getMax(); //读取优先级最高的词条 0008 T delMax(); //删除优先级最高的词条 0009 }; //PQ_ComplHeap 0010 template <typename T> void heapify ( T* A, Rank n ); //Floyd建堆算法 0011 template <typename T> Rank percolateDown ( T* A, Rank n, Rank i ); //下滤 0012 template <typename T> Rank percolateUp ( T* A, Rank i ); //上滤