AIM
WAP to demonstrate the implementation of various operations on a linear queue and circular represented using a linear array.
Algorithm
Enqueue Operation:
- If rear is set to NULL then set front and rear to temp and return.Else set rear‘s next to temp and then move rear to temp.
- Dequeue Operation:
- If front is set to NULL return.
- Initialize temp with front and set front to its next.If front is equal to NULL then set rear to NULL. Delete temp.
Program:
#include <iostream>
using namespace std;
struct node
{
int data;
struct node *next;
};
struct node *front = NULL;
struct node *rear = NULL;
struct node *temp;
void Insert()
{
int val;
cout << "Insert the
element in queue : " << endl;
cin >> val;
if (rear == NULL)
{
rear = (struct node *)malloc(sizeof(struct
node));
rear->next = NULL;
rear->data = val;
front = rear;
}
else
{
temp = (struct node *)malloc(sizeof(struct
node));
rear->next = temp;
temp->data = val;
temp->next = NULL;
rear = temp;
}
}
void Delete()
{
temp = front;
if (front == NULL)
{
cout << "Underflow"
<< endl;
return;
}
else if (temp->next != NULL)
{
temp = temp->next;
cout << "Element
deleted from queue is : " << front->data << endl;
free(front);
front = temp;
}
else
{
cout << "Element
deleted from queue is : " << front->data << endl;
free(front);
front = NULL;
rear = NULL;
}
}
void Display()
{
temp = front;
if ((front == NULL) && (rear
== NULL))
{
cout << "Queue
is empty" << endl;
return;
}
cout << "Queue elements
are: ";
while (temp != NULL)
{
cout << temp->data
<< " ";
temp = temp->next;
}
cout << endl;
}
int main()
{
int ch;
cout << "1) Insert element
to queue" << endl;
cout << "2) Delete element
from queue" << endl;
cout << "3) Display all
the elements of queue" << endl;
cout << "4) Exit" <<
endl;
do
{
cout << "Enter
your choice : " << endl;
cin >> ch;
switch (ch)
{
case 1:
Insert();
break;
case 2:
Delete();
break;
case 3:
Display();
break;
case 4:
cout <<
"Exit" << endl;
break;
default:
cout <<
"Invalid choice" << endl;
}
} while (ch != 4);
return 0;
}
Output: