Queue Data Structure
A queue is a linear data structure where insertion of element is done from one end and deletion from the other end. The queue is like a line of person at polling booth where the first person in the line is first voted. This is called First-In-First-Out (FIFO). Insertion of the element is done from the one end called FRONT end and deletion is done from the other end called REAR.
Queue Operations
These are the operations performed by a queue.
- Enqueue - The element to add in a queue.
- Dequeue - The element to delete in a queue.
- Peek - Retrieve the element from the front end of the queue without removing it from the queue.
Insertion in a Queue
The element insertion in a queue can be performed in two ways, either using Arrays or using Pointer.
Algorithm to Insert Element in a Queue
Step 1: IF REAR = MAX-1
print('Queue Overflow')
return
[END OF IF]
Step 2: IF FRONT = -1 and REAR = -1
SET FRONT = REAR = 0
ELSE
SET REAR = REAR + 1
[END OF IF]
Step 3: SET QUEUE[REAR] = NUM
Step 4: EXIT
In the above algorithm, we have checked the existence of space in the queue. If there is no space then print 'Queue Overflow' and the code is exited and if not then, we check the element at the FRONT and REAR, if both are empty then set both to 0 else increase REAR with one and insert element from the REAR end and return.
Algorithm to Delete Element in a Queue
Step 1: IF FRONT = -1 OR FRONT > REAR
print('Queue Underflow')
return
ELSE
SET FRONT = FRONT + 1
[END OF IF]
Step 2: EXIT
In the above algorithm, we have checked the existence of elements in the queue. If there is no any element, then print 'Queue Underflow' and the code is exited and if not, then FRONT is increased by one and point to the next element in the queue.
Queue Program in C
#include <stdio.h>
#define MAX 30
void insert_queue();
void delete_queue();
void display_queue();
int queue_array[MAX];
int rear = - 1;
int front = - 1;
main()
{
int che;
while (1)
{
printf("\nEnter 1 to insert element to queue \n");
printf("\nEnter 2 to delete element from queue \n");
printf("\nEnter 3 to display all elements of queue \n");
printf("\nEnter 4 to exit \n");
printf("Enter your choice : ");
scanf("%d", &che);
switch (che)
{
case 1:
insert_queue();
break;
case 2:
delete_queue();
break;
case 3:
display_queue();
break;
case 4:
exit(1);
default:
printf("Invalid input \n");
}
}
}
void insert_queue()
{
int add_item;
if (rear == MAX - 1)
printf("QUEUE OVERFLOW \n");
else
{
if (front == - 1)
front = 0;
printf("Enter value to inset in queue : ");
scanf("%d", &add_item);
rear = rear + 1;
queue_array[rear] = add_item;
}
}
void delete_queue()
{
if (front == - 1 || front > rear)
{
printf("QUEUE UNDERFLOW \n");
return ;
}
else
{
printf("Element deleted from queue : %d\n", queue_array[front]);
front = front + 1;
}
}
void display_queue()
{
int i;
if (front == - 1)
printf("EMPTY QUEUE \n");
else
{
printf("Displaying Queue : \n");
for (i = front; i <= rear; i++)
printf("%d ", queue_array[i]);
printf("\n");
}
}
Output of the above program:
Enter 1 to insert element to queue
Enter 2 to delete element from queue
Enter 3 to display all elements of queue
Enter 4 to exit
Enter your choice : 1
Enter value to inset in queue : 45
Enter 1 to insert element to queue
Enter 2 to delete element from queue
Enter 3 to display all elements of queue
Enter 4 to exit
Enter your choice : 1
Enter value to inset in queue : 89
Enter 1 to insert element to queue
Enter 2 to delete element from queue
Enter 3 to display all elements of queue
Enter 4 to exit
Enter your choice : 1
Enter value to inset in queue : 24
Enter 1 to insert element to queue
Enter 2 to delete element from queue
Enter 3 to display all elements of queue
Enter 4 to exit
Enter your choice : 3
Displaying Queue :
45 89 24
Enter 1 to insert element to queue
Enter 2 to delete element from queue
Enter 3 to display all elements of queue
Enter 4 to exit
Enter your choice : 2
Element deleted from queue : 45
Enter 1 to insert element to queue
Enter 2 to delete element from queue
Enter 3 to display all elements of queue
Enter 4 to exit
Enter your choice : 3
Displaying Queue :
89 24
Enter 1 to insert element to queue
Enter 2 to delete element from queue
Enter 3 to display all elements of queue
Enter 4 to exit
Enter your choice :