#include<bits/stdc++.h>
using namespace std;
template<typename T> class Heap{
private:
T a[100];
int index;
public:
void heapipy();
void push(T e);
T top();
void pop();
Heap();
};
int main(){
Heap<int> a;
while(true){
cout<<"1:push 2:top 3:pop"<<endl;
int choice;
cin>>choice;
int value;
switch(choice){
case 1:
cout<<"value:\t";
cin>>value;
a.push(value);
break;
case 2:
cout<<a.top()<<endl;
break;
case 3:
a.pop();
}
}
return 0;
}
template<typename T> void Heap<T>::push(T e){
a[++index] = e;
int n = index;
while(n/2){
if(a[n/2]<a[n]){
swap(a[n/2],a[n]);
}
else
break;
}
return ;
}
template<typename T> Heap<T>::Heap(){
index = 0;
}
template<typename T> void Heap<T>::pop(){
if(index){
a[1] = a[index];
int n = 1;
while(2*n<index){
if(2*n+1<index){
if(a[2*n]<a[2*n+1]){
if(a[n]<a[2*n+1]){
swap(a[n],a[2*n+1]);
n = 2*n+1;
}else{
break;
}
}else{
if(a[n]<a[2*n]){
swap(a[n],a[2*n]);
n = 2*n;
}else{
break;
}
}
}else{
if(a[n]<a[2*n]){
swap(a[n],a[2*n]);
n = 2*n;
}else{
break;
}
}
}
index--;
}
return ;
}
template<typename T> T Heap<T>::top(){
if(index)
return a[1];
return -1;
}
heap
最新推荐文章于 2024-08-31 08:00:00 发布