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
Post a Comment