Priority Queue Using Linked List In Data Structure Using C++

Data Structure Using C++

Queue Data Structure

Priority Queue Using Linked List

class node
{
 private:
  int data;
  int priority;
  node *next;
 public:
  node(int d, int p);
  void set(int d);
  int get ();
  void setPriority(int p);
  int getPriority();
  void setNext (node *);
  node* getNext();
  void showData();
};
node::node(int d, int p)
{
 data=d;
 priority=p;
 next=NULL;
}
void node::set(int d)
{
 data=d;
}
int node::get()
{
 return data;
}
void node::setPriority(int p)
{
 priority=p;
}
int node::getPriority()
{
 return priority;
}
void node::setNext(node* n)
{
 next=n;
}
node* node::getNext()
{
 return next;
}
void node::showData()
{
 cout<<get()<<"\t";
}
class queue
{
 private:
  node *front;
  node *rear;
 public:
  queue();
  void enqueue(int ,int);
  int dequeue ();
  int getFront();
  int isEmpty();
};
queue::queue()
{
 front=NULL;
 rear=NULL;
}
void queue::enqueue(int val, int p)
{
 node* newNode = new node(val,p);
 if(this->isEmpty()){
  front=newNode;
  rear=newNode;
 }else{
  if(front->getPriority()<p){
   newNode->setNext(front);
   front=newNode;
  }
  else if(rear->getPriority()>p){
   rear->setNext(newNode);
   rear=newNode;    
  }else{
   node* ptr=front;
   node* next=ptr->getNext();
   while(next->getPriority()>p)
   {
    next=next->getNext();
    ptr=ptr->getNext();  
   }
   newNode->setNext(next);
   ptr->setNext(newNode);
  }
 } 
}
int queue::dequeue()
{
 if(!isEmpty()){
     int x = front->get();
     front = front->getNext();
     return x;  
 } 
}
int queue::getFront()
{
 if(!isEmpty())
 {
  return front->get();
 }
 else
 {
  cout<<"queue is empty."<<endl;
 }
}
int queue::isEmpty()
{
 return (front==NULL);
}
int main ()
{
 queue q;
 q.enqueue(4,2);
 cout<<q.getFront()<<endl;
 q.enqueue(6,5);
 q.enqueue(16,1);
 cout<<q.getFront()<<endl;
 q.enqueue(61,4);
 q.enqueue(60,3);
 q.dequeue();
 cout<<q.getFront()<<endl; 
}


Let me know in the comment section if you have any question.

Previous Post:
Queue Using Linked List In Data Structure Using C++

Comments