Priority Queue Using Linked List Data Structure

 

Priority Queue Using Linked List Watch Video Click Here


Source Code

#include<iostream>
#include<conio.h>
using namespace std;
int count = 0;
class Node
{
public:
int data;
Node *next_add; 
};
class Linked_List
{
Node *Head;
Node *Tail;
public:
Linked_List()
{
Head = Tail = NULL; 
}
void Enqueue(int value)
{
Node *new_node = new Node;
new_node -> data = value;
new_node -> next_add = NULL;
if(Head == NULL)
{
Head = new_node;
Tail = new_node;
}
else
{
Tail -> next_add = new_node;
Tail = new_node;
Priority_Queue();
}
count++;
cout<<"\n\n***** NODE "<<value<<" VALUE ENQUEUE SUCCESSFULLY *****";
}
void Dequeue()
{
if(Head == NULL)
{
cout << "\n\n***** LINKED LIST IS EMPTY *****";
}
else
{
Node *ptr = Head;
Head = Head -> next_add;
cout<<"\n\n***** NODE "<<ptr -> data <<" VALUE DEQUEUE SUCCESSFULLY *****";
delete ptr;
}
}
void Display()
{
if(Head == NULL)
{
cout << "\n\n***** LINKED LIST IS EMPTY *****";
}
else
{
cout << "\n\nPRIORITY QUEUE : ";
Node *ptr = Head;
while(ptr != NULL)
{
cout << ptr -> data << " ";
ptr = ptr -> next_add;
}
}
}
void Priority_Queue()
{
int temp;
for(int i=1; i<=count; i++)
{
Node *ptr = Head;
for(int j=1; j<=count; j++)
{
if(ptr -> data < ptr -> next_add -> data)
{
temp = ptr -> data;
ptr -> data = ptr -> next_add -> data;
ptr -> next_add -> data = temp;
}
ptr = ptr -> next_add;
}
}
}
~Linked_List()
{}
};
main()
{
Linked_List List;
while(1)
{
system("cls");
int choice,value;
cout<<"***** QUEUE WITH ARRAY *****\n\n";
cout<<"1) ENQUEUE\n\n";
cout<<"2) DEQUEUE\n\n";
cout<<"3) DISPLAY\n\n";
cout<<"4) EXIT\n\n";
cout<<"ENTER YOUR CHOICE -> ";
cin>>choice;
switch(choice)
{
case 1:
cout<<"\n\nENTER VALUE -> ";
cin>>value;
List.Enqueue(value);
break;
case 2:
List.Dequeue();
break;
case 3:
List.Display();
break;
case 4:
exit(0);
default:
cout<<"\n\n***** SORRY WRONG CHOICE *****";
}
getch();
}
}

Post a Comment

Previous Post Next Post