
- C++ Basics
- C++ Home
- C++ Overview
- C++ Environment Setup
- C++ Basic Syntax
- C++ Comments
- C++ Data Types
- C++ Variable Types
- C++ Variable Scope
- C++ Constants/Literals
- C++ Modifier Types
- C++ Storage Classes
- C++ Operators
- C++ Loop Types
- C++ Decision Making
- C++ Functions
- C++ Numbers
- C++ Arrays
- C++ Strings
- C++ Pointers
- C++ References
- C++ Date & Time
- C++ Basic Input/Output
- C++ Data Structures
- C++ Object Oriented
- C++ Classes & Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Abstraction
- C++ Encapsulation
- C++ Interfaces
C++ Program to Implement Priority Queue
The queue which is implemented as FIFO where insertions are done at one end (rear) and deletions are done from another end (front). The first element that entered is deleted first.
Queue operations are
EnQueue (int data): Insertion at rear end
int DeQueue(): Deletion from front end
But a priority queue doesn’t follow First-In-First-Out, but rather than each element has a priority based on the basis of urgency.
Items with the same priority are processed on First-In-First-Out service basis.
An item with higher priority is processed before other items with lower priority.
Class Descriptions
Begin class Priority_Queue has following functions: function insert() to insert items at priority queue with their priorities: 1) If queue is empty insert data from the left end of the queue. 2) If queue is having some nodes then insert the new node at the end of those nodes having priority same with the new node and also before all the nodes having priority lesser than the current priority of the new node. function del() to delete items from queue. If queue is completely empty, print underflow otherwise delete the front element and update front. End
Example
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> using namespace std; struct n // node declaration { int p; int info; struct n *l; }; class Priority_Queue { private: //Declare a front pointer f and initialize it to NULL. n *f; public: Priority_Queue() //constructor { f = NULL; } void insert(int i, int p) { n *t, *q; t = new n; t->info = i; t->p = p; if (f == NULL || p < f->p) { t->l= f; f = t; } else { q = f; while (q->l != NULL && q->l->p <= p) q = q->l; t->l = q->l; q->l = t; } } void del() { n *t; if(f == NULL) //if queue is null cout<<"Queue Underflow\n"; else { t = f; cout<<"Deleted item is: "<<t->info<<endl; f = f->l; free(t); } } void show() //print queue { n *ptr; ptr = f; if (f == NULL) cout<<"Queue is empty\n"; else { cout<<"Queue is :\n"; cout<<"Priority Item\n"; while(ptr != NULL) { cout<<ptr->p<<" "<<ptr->info<<endl; ptr = ptr->l; } } } }; int main() { int c, i, p; Priority_Queue pq; Do//perform switch opeartion { cout<<"1.Insert\n"; cout<<"2.Delete\n"; cout<<"3.Display\n"; cout<<"4.Exit\n"; cout<<"Enter your choice : "; cin>>c; switch(c) { case 1: cout<<"Input the item value to be added in the queue : "; cin>>i; cout<<"Enter its priority : "; cin>>p; pq.insert(i, p); break; case 2: pq.del(); break; case 3: pq.show(); break; case 4: break; default: cout<<"Wrong choice\n"; } } while(c != 4); return 0; }
Output
1.Insert 2.Delete 3.Display 4.Exit Enter your choice : 1 Input the item value to be added in the queue : 7 Enter its priority : 2 1.Insert 2.Delete 3.Display 4.Exit Enter your choice : 1 Input the item value to be added in the queue : 6 Enter its priority : 1 1.Insert 2.Delete 3.Display 4.Exit Enter your choice : 1 Input the item value to be added in the queue : 3 Enter its priority : 3 1.Insert 2.Delete 3.Display 4.Exit Enter your choice : 1 Input the item value to be added in the queue : 4 Enter its priority : 3 1.Insert 2.Delete 3.Display 4.Exit Enter your choice : 3 Queue is : Priority Item 1 6 2 7 3 3 3 4 1.Insert 2.Delete 3.Display 4.Exit Enter your choice : 4
- Related Articles
- How to Implement Priority Queue in Python?
- Can we use Simple Queue instead of Priority queue to implement Dijkstra’s Algorithm?
- C++ Program to Implement Queue
- Double ended priority queue in C++ Program
- Turn a Queue into Priority Queue
- C++ Program to Implement Circular Queue
- Program to Implement Queue in Python
- Should we declare it as Queue or Priority Queue while using Priority Queue in Java?
- Meldable Priority Queue Operations
- C++ Program to Implement Queue using Array
- C++ Program to Implement Queue in STL
- Multithreaded Priority Queue in Python
- The Priority Queue in Javascript
- Double Ended Priority Queue (DEPQ)
- Difference Between Priority Queue and Queue Implementation in Java?

Advertisements