0% found this document useful (0 votes)
72 views3 pages

Priority Queue

This document defines a Queue data structure using linked nodes. It includes a Node class to store data and priority in each node. The Queue class implements functions like enqueue to add nodes, dequeue to remove nodes, and display the queue. Main tests the queue by adding 3 nodes and displaying them.

Uploaded by

Hamza Sajid
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
72 views3 pages

Priority Queue

This document defines a Queue data structure using linked nodes. It includes a Node class to store data and priority in each node. The Queue class implements functions like enqueue to add nodes, dequeue to remove nodes, and display the queue. Main tests the queue by adding 3 nodes and displaying them.

Uploaded by

Hamza Sajid
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

#include<iostream>

using namespace std;

class Node {
private:
int object;
int priority;
Node* nextNode;
public:
void setData(int o)
{
object = o;
}
int getData()
{
return object;
}
void setP(int p)
{
priority = p;
}
int getP()
{
return priority;
}
void setNext(Node* n)
{
nextNode = n;
}
Node* getNext()
{
return nextNode;
}
};
class Queue {
private:
Node* front;
Node* rear;
int size;
public:
Queue();
void enqueue(int addObject, int addP);
void dequeue();
void frontNode();
int length();
void display();
};
Queue::Queue()
{
front = NULL;
rear = NULL;
size = 0;
}
void Queue::enqueue(int addObject, int addP)
{
Node* newNode = new Node();
newNode->setData(addObject);
newNode->setP(addP);
if (front == NULL || addP<front->getP())
{
newNode->setNext(front);
front = newNode;
}
else
{
Node* current = front;
while(current->getNext() != NULL && current->getNext()->getP()<addP)
{
current = current->getNext();
}

newNode->setNext(current->getNext());
current->setNext(newNode);
}

size++;
}
void Queue::dequeue()
{
if (front == NULL)
{
cout << "Queue is empty, however you can't perform this operation!" <<
endl;
}
else
{
int ret = front->getData();
cout << "This node has been deleted: " << ret << endl;

Node* temp = front;


front = front->getNext();

delete temp;

size--;
}
}
void Queue::frontNode()
{
if (front == NULL)
{
cout << "Queue is empty, however, you can't perform this operation!" <<
endl;
}
else
{
cout << "The front Node in the Queue is: " << front->getData() << endl;
}
}
int Queue::length()
{
cout << "The length of a Queue is: ";
return size;
}
void Queue::display()
{
if (front == NULL)
{
cout<<"Queue is empty, however you can't perform this
operation!"<<endl;
}
else
{
Node* temp = front;
cout << "The elements in the Queue are: ";
while (temp)
{
cout << temp->getData();
cout << " | ";
cout << temp->getP();
cout << " ";
temp = temp->getNext();
}
}
}
int main()
{
Queue q;
q.enqueue(10,5);
q.enqueue(20,2);
q.enqueue(30,3);

q.display();

getchar();

You might also like