Subscribe Us

Responsive Advertisement

Advertisement

Priority queue By Heap using c++;

Priority queue By  Heap using c++;
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;
}



Post a Comment

0 Comments