From b0a8b663980341361f9e8aa225b49de68ea6d9cd Mon Sep 17 00:00:00 2001 From: jayanpahuja20 Date: Mon, 31 Oct 2022 23:41:21 +0530 Subject: [PATCH] Added code for PQ in cpp Added code for PQ in cpp --- C/DSA/PriorityQueue.cpp | 82 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 C/DSA/PriorityQueue.cpp diff --git a/C/DSA/PriorityQueue.cpp b/C/DSA/PriorityQueue.cpp new file mode 100644 index 0000000..af91e02 --- /dev/null +++ b/C/DSA/PriorityQueue.cpp @@ -0,0 +1,82 @@ +// C++ program to implement Priority Queue +// using Arrays +#include +using namespace std; + + +struct item { + int value; + int priority; +}; + + +item pr[100000]; + + +int size = -1; + + +void enqueue(int value, int priority) +{ + + size++; + + + pr[size].value = value; + pr[size].priority = priority; +} + +int peek() +{ + int highestPriority = INT_MIN; + int ind = -1; + + for (int i = 0; i <= size; i++) { + + if (highestPriority == pr[i].priority && ind > -1 + && pr[ind].value < pr[i].value) { + highestPriority = pr[i].priority; + ind = i; + } + else if (highestPriority < pr[i].priority) { + highestPriority = pr[i].priority; + ind = i; + } + } + + return ind; +} + +void dequeue() + + int ind = peek(); + + for (int i = ind; i < size; i++) { + pr[i] = pr[i + 1]; + } + + size--; +} + +// Driver Code +int main() +{ + enqueue(10, 2); + enqueue(14, 4); + enqueue(16, 4); + enqueue(12, 3); + + int ind = peek(); + + cout << pr[ind].value << endl; + dequeue(); + + ind = peek(); + cout << pr[ind].value << endl; + dequeue(); + + ind = peek(); + cout << pr[ind].value << endl; + + return 0; +}