Unit 2 QUEUES
Unit 2 QUEUES
Queue
1. A queue can be defined as an ordered list which enables insert operations to be performed at one end
called REAR and delete operations to be performed at another end called FRONT.
2. Queue is referred to be as First In First Out list.
3. For example, people waiting in line for a rail ticket form a queue.
Applications of Queue
Due to the fact that queue performs actions on first in first out basis which is quite fair for the ordering of actions.
Printers: Queue data structure is used in printers to maintain the order of pages while printing.
Interrupt handling in computes: The interrupts are operated in the same order as they arrive, i.e., interrupt which
comes first, will be dealt with first.
Process scheduling in Operating systems: Queues are used to implement round-robin scheduling algorithms in
computer systems.
Switches and Routers: Both switch and router interfaces maintain ingress (inbound) and egress (outbound) queues
to store packets.
Customer service systems: It develops call center phone systems using the concepts of queues.
Array representation of Queue
We can easily represent queue by using linear arrays. There are two variables i.e. front and rear, that are
implemented in the case of every queue. Front and rear variables point to the position from where insertions and
deletions are performed in a queue. Initially, the value of front and queue is -1 which represents an empty queue.
Array representation of a queue containing 5 elements along with the respective values of front and rear, is shown in
the following figure.
The above figure shows the queue of characters forming the English word "HELLO". Since, No deletion is
performed in the queue till now, therefore the value of front remains -1 . However, the value of rear increases by one
every time an insertion is performed in the queue. After inserting an element into the queue shown in the above
figure, the queue will look something like following. The value of rear will become 5 while the value of front
remains same.
After deleting an element, the value of front will increase from -1 to 0. however, the queue will look something like
following.
}
void delete()
{
int item;
if (front == -1 || front > rear)
{
printf("\nUNDERFLOW\n");
return;
}
else
{
item = queue[front];
if(front == rear)
{
front = -1;
rear = -1 ;
}
else
{
front = front + 1;
}
printf("\nvalue deleted ");
}
}
void display()
{
int i;
if(rear == -1)
{
printf("\nEmpty queue\n");
}
else
{ printf("\nprinting values .....\n");
for(i=front;i<=rear;i++)
{
printf("\n%d\n",queue[i]);
}
}
}
OUTPUT:
*************Main Menu**************
==============================================
1.insert an element
2.Delete an element
3.Display the queue
4.Exit
Value inserted
*************Main Menu**************
==============================================
1.insert an element
2.Delete an element
3.Display the queue
4.Exit
Enter your choice ?1
Enter the element
90
Value inserted
*************Main Menu**************
===================================
1.insert an element
2.Delete an element
3.Display the queue
4.Exit
Enter your choice ?2
value deleted
*************Main Menu**************
==============================================
1.insert an element
2.Delete an element
3.Display the queue
4.Exit
Enter your choice ?3
printing values .....
90
*************Main Menu**************
==============================================
1.insert an element
2.Delete an element
3.Display the queue
4.Exit
Enter your choice ?4
Although, the technique of creating a queue is easy, but there are some drawbacks of using this technique to
implement a queue.
o Memory wastage : The space of the array, which is used to store queue elements, can never be reused to
store the elements of that queue because the elements can only be inserted at front end and the value of front
might be so high so that, all the space before that, can never be filled.
The above figure shows how the memory space is wasted in the array representation of queue. In the above figure, a
queue of size 10 having 3 elements, is shown. The value of the front variable is 5, therefore, we can not reinsert the
values in the place of already deleted element before the position of front. That much space of the array is wasted
and can not be used in the future (for this queue).
On of the most common problem with array implementation is the size of the array which requires to be declared in
advance. Due to the fact that, the queue can be extended at runtime depending upon the problem, the extension in
the array size is a time taking process and almost impossible to be performed at runtime since a lot of reallocations
take place. Due to this reason, we can declare the array large enough so that we can store queue elements as enough
as possible but the main problem with this declaration is that, most of the array slots (nearly half) can never be
reused. It will again lead to memory wastage.