1、自定义实现:
使用时为防止出现不能运行的情况(最好.h和.cpp文件都导入,似乎使用模板类时有时会出现只导入.h文件会一直报错的情况)
(1)小根堆实现:
①MinHeap.h
#include <iostream>
/**
* 小根堆
*/
template <class T>
class MinHeap{
public:
MinHeap();//构造函数
~MinHeap(){
delete []heap;};//析构函数
bool isEmpty(){
return (heapSize==0);};//当堆为空时返回true
int size(){
return heapSize;};//返回堆的大小
T top();//返回堆的根节点
T pop();//返回并删除堆的根节点
void push(const T& element);//向堆中插入元素,当堆满时扩展堆的容量
private:
int capacity;//堆容量
int heapSize;//堆的元素数量
T* heap;//保存堆数据的数组
};
②MinHeap.cpp
#include "MinHeap.h"
/**
* 小根堆的具体实现
*/
template<class T>
MinHeap<T>::MinHeap() {
//构造函数
//this->capacity=capacity;
capacity=16;
heapSize=0;
heap=new T[capacity+1];
}
template<class T>
T MinHeap<T>::top(){
//返回堆的根节点
return heap[