Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions prioritqueue/1prqueue.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
#include<bits/stdc++.h>
using namespace std;

class priorityqueue{
public:
vector<int>pq;

bool isempty(){
return pq.size()==0;
}
int getmin(){
if(isempty()){
return 0;
}
return pq[0];
}
int getsize(){
return pq.size();
}
void insert(int x){
pq.push_back(x);
int child_index=pq.size()-1;
while(child_index>0){
int parent_index=(child_index-1)/2;

if(pq[child_index]<pq[parent_index]){
int temp=pq[child_index];
pq[child_index]=pq[parent_index];
pq[parent_index]=temp;
}
else{
break;
}
child_index=parent_index;
}
}
int removemin(){
if(isempty()){
return 0;
}
int ans=pq[0];
pq[0]=pq[pq.size()-1];
pq.pop_back();

//downheapify
int parent_index=0;
int leftchild_index=2*parent_index+1;
int rightchild_index=2*parent_index+2;



while(leftchild_index<pq.size()){
int min_index=parent_index;


if(pq[min_index]>pq[leftchild_index]){
min_index=leftchild_index;
}
if(rightchild_index<pq.size() && pq[rightchild_index]<pq[min_index]){
min_index=rightchild_index;
}





int temp=pq[min_index];
pq[min_index]=pq[parent_index];
pq[parent_index]=temp;
parent_index=min_index;
int leftchild_index=2*parent_index+1;
int rightchild_index=2*parent_index+2;
if(min_index==parent_index){
break;
}

}
return ans;
}

};
int main(){
priorityqueue p;
p.insert(100);
p.insert(10);
p.insert(15);
p.insert(4);
p.insert(17);
p.insert(21);
p.insert(67);
cout<<p.getsize()<<endl;
while(!p.isempty()){
cout<<p.removemin()<<" ";
}
cout<<endl;




}
Binary file added prioritqueue/1prqueue.exe
Binary file not shown.
38 changes: 38 additions & 0 deletions prioritqueue/stlpriorityqueue.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#include<bits/stdc++.h>
using namespace std;

//max priority queue , mapheap
// int main(){
// priority_queue<int>pq;
// pq.push(78);
// pq.push(8);
// pq.push(128);
// pq.push(71);
// pq.push(9);
// pq.push(14);
// cout<<pq.size()<<endl;
// while(!pq.empty()){
// cout<<pq.top()<<" ";
// pq.pop();
// }
// }




//minheap queue , minheap

int main(){
priority_queue<int,vector<int>,greater<int>>pq;
pq.push(78);
pq.push(8);
pq.push(128);
pq.push(71);
pq.push(9);
pq.push(14);
cout<<pq.size()<<endl;
while(!pq.empty()){
cout<<pq.top()<<" ";
pq.pop();
}
}
Binary file added prioritqueue/stlpriorityqueue.exe
Binary file not shown.