0% found this document useful (0 votes)
10 views

Queue 1

This document discusses queues and their applications. It begins by defining queues as first-in, first-out data structures. It then covers types of queues like circular queues and priority queues. Key queue operations like insert and delete are explained. Memory representations and applications like simulation and CPU scheduling are also summarized.

Uploaded by

Supreme Ff
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

Queue 1

This document discusses queues and their applications. It begins by defining queues as first-in, first-out data structures. It then covers types of queues like circular queues and priority queues. Key queue operations like insert and delete are explained. Memory representations and applications like simulation and CPU scheduling are also summarized.

Uploaded by

Supreme Ff
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

CHP-4 QUEUE

1.INTRODUCTION

➢A queue is a linear list in which elements can be added


at one end and elements can be removed only at other
end.
➢That is,the first element added to the queue is the first
element to be removed.
➢Queue works on the principle of ‘ first-in-first-
out’(FIFO).
➢A common example of queue is people waiting in line
at ticket window.
2. DEFINITION AND TYPES
 A queue is a linear data structure in whichanewelement is inserted
at one end and element is deleted from other end.
 The end of the queue from which the element is deleted is known
as front.
 The end at which new element is added is known as rear.
 Fig. 4.1 shows a queue.

❖TYPES OF QUEUE:
1.CIRCULAR QUEUE
2.DEQUEUE
3.PRORITY QUEUE
3. OPERATIONS ON QUEUE

❑The two basic operations that can be performed on a queue are:

Insert : to insert an element at rear of the queue


Delete: to delete an element from front of the queue.

❑Before inserting a new element in the queue, it is necessary to test the


condition of overflow.

❑Overflow occurs when the queue is full and there is no space for a new
element.

❑ Similarly, before removing the element from the queue, it is necessary to


check the condition of underflow.

❑ Underflow occurs when the queue is empty.


4. MEMORY REPRESENTATION OFQUEUES
 A queue can be represented in memory either as an array or as a singly linked list.
INSERTOPERATIONS ON QUEUE
DELETE OPERATIONS ON QUEUE
5. CIRCULAR QUEUE
 As discussed earlier, in case of queue represented as an array, once the value of the rear reaches the
maximum size of the queue, no more elements can be inserted.
 However, there may be the possibility that space on the left of the front index is vacant. Hence, in spite of
space on the left of front being empty, the queue is considered to be full.
 This wastage of space in the array implementation of a queue can be avoided by shifting the elements to
the beginning of array if the space is available.
 In order to do this, the values of Rear and Front indices have to be changed accordingly. However, this is a
complex process and is difficult to be implemented. An alternative solution to this problem is to
implement a queue as a circular queue.

 The array implementation of circular queue is similar to the array implementation of queue. The only
difference is that as soon as the rear index of the queue reaches the maximum size of the array, Rear is
reset to the beginning of the queue provided it is free. The circular queue is full only when all the locations
in the array are occupied.The circular queue is shown in Figure 4.3.
Various States of Circular Queue After insert and Delete
operations
Number of Elements in Circular Queue
 The total number of elements in a circular queue at any point of time
can be calculated from the current values of the Rear and the Front
indices of the queue.
 In case, Front<Rear, the total number of elements = Rear-Front+1. For
instance, in Figure 4.5(a), Front=3 and Rear=7.
 Hence, the total number of elements in CQueue at this point of time is
7-3+1=5.
 In case, Front>Rear, the total number of elements = Max+ (Rear-
Front) +1. For instance, in Figure 4.5(b), Front=3 and Rear=0. Hence,
the total number of elements in CQueue is 8+(0-3)+l.
Algorithm of Circular Queue
Algorithm of Circular Queue
6.PRIORITY QUEUE
 A priority queue is a type of queue in which each element is assigned a
priority and the elements are added or removed according to that
priority. While implementing a priority queue, following two rules are
applied.

(1)The element with higher priority is processed before any element of


lower priority.
(2)The elements with the same priority are processed according to the
order in which they were added to the queue.

 A priority queue can be represented in many ways. Here, we are


discussing multi-queue implementation of priority queue.
Multi-queue Implementation (Array
Representation of Priority Queue)
 In multi-queue representation of priority queue, for each
priority, a queue is maintained. The queue corresponding to
each priority can be represented in the same array of
sufficient size.
 For each queue, two variables Fronti and Reari are
maintained (see Figure 4.6).
 Observe that Fronti and Reari correspond to the front and
rear position of queue for priority Priorityi.
 Clearly, in this representation, shifting is required to make space for an element
to be inserted.
 To avoid this shifting, an alternative representation can be used (see Figure 4.7).
 In this representation, instead of representing queue corresponding to each
priority using a single array, a separate array for each priority is maintained.
 Each queue is implemented as a circular array and has its own two variables,
Front and Rear.
 The element with given priority number is inserted in the corresponding
queue. Similarly, whenever an element is to be deleted from the queue, it must
be the element from the highest priority queue.
 Note that lower priority number indicates higher priority.
 If the size of each queue is same, then instead of multiple
one-dimensional arrays, a single two-dimensional array can
be used where row i corresponds to the queue of priority i.
 In addition, two single dimensional arrays are used. One is
used to keep track of front position and another to keep track
of rear position of each queue (see Figure 4.8).
INSERT OPERATION IN PRIORITY QUEUE
DELETE OPERATION IN PRIORITY QUEUE
7.DEQUE
 Deque (short form of double-ended queue) is a linear list in
which elements can be inserted or deleted at either end but
not in the middle.
 That is, elements can be inserted/deleted to/ from the rear
or the front end.
 Figure 4.9 shows the representation of a deque.
INSERT OPERATION IN BEGINNING OF DEQUE
INSERT OPERATION AT END OF DEQUE
DELETE OPERATION IN BEGINNING OF DEQUE
DELETE OPERATION AT END OF DEQUE
VARIATIONS OF DEQUE
 There are two variations of a deque that are as follows:
(1)Input restricted deque: It allows insertion of elements at one end only
but deletion can be done at both ends.
(2)Output restricted deque: It allows deletion of elements at one end only
but insertion can be done at both ends.
 The implementation of both these queues is similar to the implementation of
deque. The only difference is that in input restricted queue, function for
insertion in the beginning is not needed whereas in output-restricted queue,
function for deletion in the beginning is not needed.
7.APPLICATION OF QUEUE

 There are numerous applications of queue in computer science.


 Various real-life applications, like railway ticket reservation, banking
system are implemented using queue.
 One of the most useful applications of queue is in simulation.
 Another application of queue is in operating system to implement
various functions like CPU scheduling in multiprogramming
environment, device management (printer or disk), etc. Besides these,
there are several algorithms like level-order traversal of binary tree, etc.,
that use queues to solve the problems efficiently.
Simulation
 Simulation is the process of modelling a real-life situation through a
computer program.
 Its main use is to study a real life situation without actually making it to
occur.
 It is mainly used in areas like military, scientific research operations
where it is expensive or dangerous to experiment with the real system.
 In simulation, corresponding to each object and action, there is
counterpart in the program.
 The objects being studied are represented as data and action as
operations on the data.
 By supplying different data, we can observe the result of the program.
 If the simulation is accurate, the result of the program represents the
behaviour of the actual system accurately.
Simulation(Cont.)
 Consider a ticket reservation system having four counters.
 If a customer arrives at time t and a counter is free then the customer
will get the ticket immediately.
 However, it is not always possible that counter is free. In that case, a new
customer goes to the queue having less number of customers.
 Assume that the time required to issue the ticket is t. Then the total
time spent by the customer is equal to the time t (time required to issue
the ticket) plus the time spent waiting in line.
 The average time spent in the line by the customer can be computed by
a program simulating the customer action.
 This program can be implemented using queue, since while one
customer is being serviced, others keep on waiting.
CPU Scheduling in Multiprogramming Environment
 As we know that in multiprogramming environment,
multiple processes run concurrently to increase CPU
utilization. All the processes that are residing in memory and
are ready to execute are kept in a list referred as ready queue.
It is the job of scheduling algorithm to select a process from
the processes and allocate the CPU to it.
 Let us consider a multiprogramming environment where the
processes are classified into three different groups, namely,
system processes, interactive processes and batch processes.
 To each group of process, some priority is associated. The
system processes have the highest priority whereas the batch
processes have the least priority.
CPU Scheduling in Multiprogramming
Environment(Cont.)
 To implement multiprogramming environment, multi-level queue
scheduling algorithm is used.
 In this algorithm, the ready queue is partitioned into multiple queues (see
Figure 4.12).
 The processes are assigned to the respective queues.
 The higher priority processes are executed before the lower priority processes.
For example, no batch process can run unless all the system processes and
interactive processes arc executed.
 If a batch process is running and a system process enters the queue, then batch
process would be pre-empted to execute this system process.
Round Robin algorithm
 The round robin algorithm is one of the CPU scheduling algorithms
designed for the timesharing systems.
 In this algorithm, the CPU is allocated to a process for a small time
interval called time quantum (generally from 10 to 100 milliseconds).
 Whenever a new process enters, it is inserted at the end of the ready
queue. The CPU scheduler picks the first process from the ready queue
and processes it until the time quantum elapsed.
 Then CPU switches to the next process in the queue and first process is
inserted at the end of the queue if it has not been finished.
 If the process is finished before the time quantum, the process itself will
release the CPU voluntarily and the process will be deleted from the
ready queue.
 This process continues until all the processes are finished.
 When a process is finished, it is deleted from the queue. To implement
the round robin algorithm, a circular queue can be used.

You might also like