Operations on Priority Queue:
- enqueue(): This function is used to insert new data into the queue.
- dequeue(): This function removes the element with the highest priority from the queue.
- peek()/top(): This function is used to get the highest priority element in the queue without removing it from the queue.
Approach: The idea is to create a structure to store the value and priority of the element and then create an array of that structure to store elements. Below are the functionalities that are to be implemented:
- enqueue(): It is used to insert the element at the end of the queue.
- Traverse across the priority queue and find the element with the highest priority and return its index.
- In the case of multiple elements with the same priority, find the element with the highest value having the highest priority.
- Find the index with the highest priority using the peek() function let’s call that position as idx, and then shift the position of all the elements after the position idx one position to the left.
- Decrease the size by one.
Below is the implementation of the above approach:
- enqueue(): O(1)
- peek(): O(N)
- dequeue: O(N)
Application of Priority Queue:
- For Scheduling Algorithms the CPU has to process certain tasks having priorities. The process of having higher priority gets executed first.
- In a time-sharing computer system, the process of waiting for the CPU time gets loaded in the priority queue.
- A Sorting-priority queue is used to sort heaps.
Want to learn from the best curated videos and practice problems, check out the C Foundation Course for Basic to Advanced C.