0% found this document useful (0 votes)
28 views16 pages

DS Unit-2 Queue

3130702_DS_Unit-2_Queue

Uploaded by

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

DS Unit-2 Queue

3130702_DS_Unit-2_Queue

Uploaded by

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

Data Structures (DS)

GTU # 3130702

Unit-2
Linear Data
Structure
(Queue)
Queue
 A linear list which permits deletion to be performed at one end of the list
and insertion at the other end is called queue.
 The information in such a list is processed FIFO (first in first out) or
FCFS (first come first served) manner.
 Front is the end of queue from that deletion is to be performed.
 Rear is the end of queue at which new element is to be inserted.
 Insertion operation is called Enqueue & deletion operation is called
Dequeue. 10 8 5 80 50
10
0

Deleti Inserti
on on

Fron Rea
t r
Applications of Queue
 Queue of people at any service point such as ticketing etc.
 Queue of air planes waiting for landing instructions.
 Queue of processes in OS.
 Queue is also used by Operating systems for Job Scheduling.
 When a resource is shared among multiple consumers. E.g., in case of
printers the first one to be entered is the first to be processed.
 When data is transferred asynchronously (data not necessarily
received at same rate as sent) between two processes. Examples include
IO Buffers, pipes, file IO, etc.
 Queue is used in BFS (Breadth First Search) algorithm. It helps in
traversing a tree or graph.
 Queue is used in networking to handle congestion.
Procedure: Enqueue (Q, F, R, N,Y)
 This procedure inserts Y at rear end of Queue. R

 Queue is represented by a vector Q containing N elements.


5 20 80
 F is pointer to the front element of a queue.
 R is pointer to the rear element of a queue. F

1. [Check for Queue Overflow] N=3, R=0,


If R >= N F=0
Then write (‘Queue Overflow’) F =1
0
Return R= 2
1
3
0
2. [Increment REAR pointer] Enqueue (Q, F, R,
R  R + 1
N=3,Y=5)
Enqueue (Q, F, R,
3. [Insert element]
N=3,Y=20)
Enqueue (Q, F, R,
Q[R]  Y
4. [Is front pointer properly set?] N=3,Y=80)
Enqueue (Q, F, R,
IF F=0 N=3,Y=3)
Queue Overflow
Then F  1
Return
Function: Dequeue (Q, F, R)
 This function deletes & returns an element from front end of the
Queue.
 Queue is represented by a vector Q containing N elements.
Case No
1:
 F is pointer to the front element of a queue.
F=0,
R R=0
1.is[Check
pointer to Queue
for the rear element of a queue.
Underflow] Queue Underflow
If F = 0
Then write (‘Queue Underflow’) Case No FR
Return(0) 2:
2. [Delete element] F=3,
Y  Q[F] R=3
F=0, 50
R=0
3. [Is Queue Empty?]
If F = R
Then F  R  0 Case No F R
Else F  F + 1 3:
4. [Return Element] F=1,
R=3 5 -8 50
Return (Y) F=2,
R=3
Example of Queue Insert / Delete
Perform following operations on queue with size 4 & draw queue after
each operation
Insert ‘A’ | Insert ‘B’ | Insert ‘C’ | Delete ‘A’ | Delete ‘B’ | Insert ‘D’ | Insert
Empty R=3 Insert
‘E’ ‘C’ R=4 Insert ‘D’
Queue F=1 F=3
00 A B C C D

FR F R FR

R=1 Insert ‘A’ R=3 Delete ‘A’ R=4 Insert ‘E’


F=2 F=3
F=1 A A B C C D

FR F R F R

Insert ‘B’ R=3 Delete ‘B’ (R=4) >= (N=4) (Size


R=2 F=3 of Queue
Queue )
Overflow
F=1 A B B C
Queue Overflow, but
space is there with
FR F R Queue, this leads to
the memory wastage
Circular Queue
 A more suitable method of representing simple queue which prevents an
excessive use of memory is to arrange the elements Q[1], Q[2]….,Q[n]
in a circular fashion with Q[1] following Q[n], this is called circular
queue.
 Incircular queue the last node is connected back to the first node to
make a circle.
 Circular queue is a linear data structure. It follows FIFO principle.
 It is also called as “Ring buffer”.
Q[1 Q[2 Q[n
] ] ]
Procedure: CQINSERT (F, R, Q, N, Y)
 This procedure inserts Y at rear end of the Circular Queue. F R

 Queue is represented by a vector Q containing N elements. 8


1
5
 F is pointer to the front element of a queue.
 R is pointer to the rear element of a queue. F R

1. [Reset Rear Pointer] 3. [Insert element] 1


8
If R = N Q[R]  Y 5
Then R  1 4. [Is front pointer
Else R  R + 1 properly set?]
2. [Overflow] IF F=0 F R
If F=R Then F  1
Then Return 2 1
6 8
Write(‘Overflow’) 3 5
Return
Function: CQDELETE (F, R, Q, N)
 This function deletes & returns an element from front end of the
Circular Queue. FR

 Queue is represented by a vector Q containing N elements.


6
 F is pointer to the front element of a queue.
R
1.is[Underflow?]
pointer to the rear element of a queue.
4. Increment Front R F
If F = 0 Pointer]
Then Write(‘Underflow’) IF F = N
Return(0) 2 6 4
Then F  1
2. [Delete Element] Else F  F + 1
Y  Q[F] Return(Y)
F R
3. [Queue Empty?]
If F = R
Then F  R  0
6 8 4
Return(Y)
Example of CQueue Insert / Delete
Perform following operations on Circular queue with size 4 & draw queue
after each operation
Insert ‘A’ | Insert ‘B’ | Insert ‘C’ | Delete ‘A’ | Delete ‘B’ | Insert ‘D’ | Insert
Empty ‘E’ ‘C’
Insert R=4 Insert ‘D’
R=3
Queue F=1 F=3
00 A B C C D

FR F R FR

R=1 Insert ‘A’ R=3 Delete ‘A’ R=1 Insert ‘E’


F=2 F=3
F=1 A A B C E C D

FR F R F R

Insert ‘B’ R=3 Delete ‘B’


R=2 F=3
F=1 A B B C

FR F R
DQueue
 A DQueue (double ended queue) is a linear list in which insertion and
deletion are performed from the either end of the structure.
 There are two variations of Dqueue
 Input restricted dqueue – allows insertion at only one end
 Output restricted dqueue – allows deletion from only one end

Inserti Deleti
on
Deleti Inserti
on
 Dqueue Algorithms on on
Fro Re
 DQINSERT_REAR is same as QINSERT (Enqueue)
nt ar
 DQDELETE_FRONT is same as QDELETE (Dequeue)
 DQINSERT_FRONT
 DQDELETE_REAR
Procedure: DQINSERT_FRONT (Q,F,R,N,Y)
 This procedure inserts Y at front end of the Circular Queue.
 Queue is represented by a vector Q containing N elements.
 F is pointer to the front element of a queue.
 R is pointer to the rear element of a queue.
1. [Overflow?]
F R
If F = 0
Then Write(‘Empty’)
Return Overfl
10 89 7
If F = 1 ow
Then Write(‘Overflow’)
Return F R
2. [Decrement front
Pointer]
F  F - 1 5 10 89 7
3. [Insert Element?] 0
Q[F]  Y
Return
Function: DQDELETE_REAR(Q,F,R)
 This function deletes & returns an element from rear end of the Queue.
 Queue is represented by a vector Q containing N elements.
 F is pointer to the front element of a queue.
 R is pointer to the rear element of a queue.
1. [Underflow?] FR
If R = 0
Then Write(‘Underflow’)
Return(0) 7
2. [Delete Element]
Y  Q[R]
F R
3. [Queue Empty?]
IF R = F
Then R  F  0
10 89 7
Else R  R – 1
4. [Return Element]
Return(Y)
Priority Queue
 A queue in which we are able to insert & remove items from any
position based on some property (such as priority of the task to be
processed) is often referred as priority queue.
 Below fig. represent a priority queue of jobs waiting to use a computer.
 Priorities are attached with each Job
 Priority 1 indicates Real Time Job
 Priority 2 indicates Online Job
 Priority 3 indicates Batch Processing Job

 Therefore if a job is initiated with priority i, it is inserted immediately at


the end of list of other jobs with priorities i.
 Here jobs are always removed from the front of queue.
Priority Queue Cont…
Task R1 R2 … Ri-1 O1 O2 … Oj-1 B1 B2 … Bk-1 …
Priority 1 1 … 1 2 2 … 2 3 3 … 3 …

Ri Oj Bk
Priority Queue viewed as a single queue with insertion allowed at any position

Priority - 1 R1 R2 … Ri-1 Ri

Priority - 2 O1 O2 … Oj-1 Oj

Priority - 3 B1 B2 … Bk-1 Bk

Priority Queue viewed as a Viewed as a set of queue


Data Structures (DS)
GTU # 3130702

Thank
You

You might also like