Heap模板类

来源:互联网 发布:mac怎么给文件夹加密 编辑:程序博客网 时间:2024/05/15 23:47

Heap模板类

闲来无事写了一个heap模板类,不支持自动扩容,需要预先指定空间大小,支持插入,删除,返回最大值,没有实现赋值功能,代码细节不够完美,挂在这里留待以后修改。

代码如下

template<typename T> class heap{private:T* elem;int size;int capa;public:heap():elem(NULL){}heap(int _capa):elem(NULL),capa(_capa){elem = new T[capa+1];size = 0;}bool empty(){return size==0;}bool insert(const T& inser){if (size+1>capa)return false;int k = ++size;while (k>1&&elem[k/2]<inser){elem[k] = elem[k/2];k/=2;}elem[k] = inser;return true;}bool dele(){if (empty())return false;T tmp = elem[size--];int child,father;for (father=1;father*2<=size;father=child){child = father*2;if (child+1<=size&&elem[child]<elem[child+1])child = child+1;if (elem[child]<tmp)break;elem[father] = elem[child];}elem[father] = tmp;return true;}T top(){return elem[1];} ~heap(){delete[] elem;}};


0 0