Heap模板类

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值