By ujjal roy
#include<bits/stdc++.h>
using namespace std;
//push,top,pop,size,empty
int arr[10000];
int cnt=0;
void Push(int n)
{
arr[cnt]=n;
int parent;
if(cnt>0)
{
parent=(cnt-1)/2;
int i;
i=cnt;
while(i>0&&arr[i]>arr[parent])
{
swap(arr[i],arr[parent]);
i=parent;
parent=(i-1)/2;
}
}
cnt++;
}
int Top()
{
if(cnt<=0)return -1;
return arr[0];
}
int Size()
{
return cnt;
}
bool Empty()
{
if(cnt<=0)return true;
return false;
}
void heapify(int i)
{
int left,right,target;
left=2*i+1;
right=2*i+2;
target=i;
if(left<cnt&&arr[left]>arr[target])
{
target=left;
}
if(right<cnt&&arr[right]>arr[target])
{
target=right;
}
if(target!=i)
{
swap(arr[target],arr[i]);
heapify(target);
}
}
void Pop()
{
if(cnt<=0)return;
swap(arr[0],arr[cnt-1]);
cnt--;
heapify(0);
}
int main()
{
Push(10);
Push(20);
Push(30);
Push(40);
Push(50);
Push(100);
Push(3);
Push(20);
cout<<Top()<<endl;
cout<<Size()<<endl;
cout<<Empty()<<endl;
Pop();
cout<<Top()<<endl;
cout<<Size()<<endl;
cout<<Empty()<<endl;
cout<<endl;
while(!Empty())
{
cout<<Top()<<" ";
Pop();
}
cout<<endl;
return 0;
}
0 Comments