最小堆MinHeap
data.txt:
8
53 17 78 09 45 65 87 23
主函数
#include <fstream>
#include "MinHeap.h"
using namespace std;
int main(){
ifstream fin("data.txt");
assert(fin);
int n;
assert(fin >> n);
int * a = new int[n];
cout << "There are " << n << " nodes in the file.\n";
cout << "The value of each node is:\n";
for(int i = 0; i < n; i++){
fin >> a[i];
cout << "node[" << i << "]: " << a[i] << endl;
}
MinHeap</*int,*/int> h(a,n);
cout<<"The MinHeap is: \n";
h.output();
cout<<"+-----------------------------------------------------+"<<endl;
cout<<"Test bool Insert(const Item& x)"<<endl;
cout<<"Please input a value to insert : ";
int t;
cin>>t;
h.Insert(t);
cout<<"The new Minheap is : ";
h.output();
cout<<"+-----------------------------------------------------+"<<endl;
cout<<"Test bool RemoveMin(Item& x);"<<endl;
h.RemoveMin(t);
cout<<"The new heap is : ";
h.output();
cout<<"The min removed is : "<<t<<endl;
cout << "Press enter to exit!\n";
cin.ignore(100, '\n');
char ch;
cin.get(ch);
return 0;
}
MinHeap最小堆类定义
template </*class T*/typename Item> class MinHeap{
//T为关键码的数据类型,Item为记录的结构类型
public:
MinHeap(int sz = DefaultSize);//构造函数:建立空堆
MinHeap(Item arr[], int n); //构造函数:通过一个数组建堆
~MinHeap(){
delete []heap;
}
bool Insert(const Item &x);
bool RemoveMin(Item &x);
bool IsEmpty()const{
return currentSize == 0;
}
bool IsFull()const{
return currentSize == maxHeapSize;
}
void MakeEmpty(){
currentSize = 0