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