Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Data Structure and
Algorithm (CS 102)
Ashok K Turuk
Queue
• A queue is a linear list of elements in
which
– deletion can take place only at one end
called Front, and
– Insert...
Queue
• Queue are represented in two-ways
– Linear Array
– One-way Linked List
Array representation of Queue
• A queue is maintained by a
– linear array QUEUE
– Two pointer variable
• FRONT : Containin...
Queue
FRONT: 1
REAR: 4

AA BB CC DD
1
2
3
4
5

…
6

7

N

Delete an element
FRONT: 2
REAR: 4

1

BB CC DD
2
3
4
5

…
6

7
...
Queue
FRONT: 2

REAR: 4

BB CC DD

1

2

3

4

…

5

6

7

N

Insert an element
FRONT: 2
REAR: 5

1

BB CC DD EE
2
3
4
5
6...
Queue
• REAR = N and Insert an element into
queue
FRONT: 7
REAR: N

1

2

3

4

5

6

XX …
7

Move the entire queue to the...
Queue
• Queue is assumed to be circular
• QUEUE[1] comes after QUEUE[N]
• Instead of increasing REAR to N +1, we
reset REA...
Queue
• FRONT = N and an element of QUEUE
is Deleted
FRONT: N
REAR:

1

2

3

4

5

6

XX …
7

We reset FRONT = 1, instead...
Queue
• QUEUE contain one element
FRONT = REAR NULL
FRONT: 7
REAR: 7

1

2

3

4

5

6

FRONT = NULL and REAR = NULL

XX …...
Algorithm to Insert in Q
[1] If FRONT = 1 and REAR = N or if FRONT =
REAR + 1 then Print: Overflow and Exit
[2] If FRONT =...
Queue

FRONT: 7
REAR: 6

AA BB CC DD EE FF
1
2
3
4
5
6

FRONT = REAR + 1 [FULL QUEUE]

XX …
7

ZZ
N
Algorithm to Delete from Q
[1] If FRONT = NULL then Print: Underflow and
Exit
[2] Set ITEM = QUEUE[FRONT]
[3]

If FRONT = ...
Linked List Representation of Queue
• A linked queue is a queue implemented
as linked list with two pointer variable
FRONT...
Linked List Representation of
Queue
FRONT
CC

BB

AA X
REAR

15
Insertion in a Queue
FRONT
AA

BB
NEW

CC X
REAR
DD

16
Insertion in a Queue
FRONT
AA

BB

CC X
DD
REAR
17
Delete from a Queue
FRONT
CC

BB

AA X
REAR

18
Delete from a Queue

FRONT
BB

AA X
REAR

19
Linked Queue
• No need to check for overflow condition
during insertion
• No need to view it as circular for
efficient man...
Insertion
[1] NEW -> INFO = ITEM
NEW -> LINK = NULL
[2] If (FRONT = NULL) then
FRONT = REAR = NULL
else
Set REAR -> LINK =...
Deletion
[1] If (FRONT = NULL) then
Print: Overflow, and Exit
[2] FRONT = FRONT -> LINK
[3] Exit
Deque
• A deque is a linear list in which
elements can be added or removed at
either end but not in the middle

• Deque is...
Deque
• LEFT = NULL indicate deque is empty
LEFT: 4
RIGHT: 7

LEFT: 4
RIGHT: 7

1

2

YY
1

3

ZZ
2
3

AA BB CC DD
4
5
6
7...
Variation of deque
• There are two variation of deque
[1] Input-restricted queue: Deque which
allows insertions at only on...
Deque
LEFT: 2
RIGHT: 4

1

A
2

C
3

D
4

5

6

F is added to the right
LEFT: 2
RIGHT: 5

1

A
2

C
3

D
4

F
5

6
Deque
LEFT: 2
RIGHT: 5

1

A
2

C
3

D
4

F
5

6

Two Letters on right is deleted
LEFT: 2
RIGHT: 3

1

A
2

C
3

4

5

6
Deque
LEFT: 2
RIGHT: 3

1

A
2

C
3

4

5

6

K, L and M are added to the Left
LEFT: 5
RIGHT: 3

K
1

A
2

C
3

4

M
5

L
...
Priority Queue
• A priority queue is a collection of elements
such that each elements has been assigned
a priority and suc...
Priority Queue
• There are different ways a priority
queue can be represented such as
[1] One-way List
[2] Multiple queue
One-Way List Representation of
a Priority Queue
[1] Each node in the list will contain three
items of information: an info...
Queue

Head
A1

B2

F2

D3

32
Insertion and Deletion
• Deletion : Delete the first node in the
list.
• Insertion: Find the location of Insertion
Add an ...
Array representation of Priority
Queue
• Separate queue for each level of
priority
• Each queue will appear in its own
cir...
QUEUE

FRONT REAR
1
1
2
3
4
5

2
1
0
5
4

2
3
0
1
4

1
2
3
4
5

BB

2
AA
CC

3

4

5

DD

EE

DD

FF

GG
Deletion Algorithm [outline]
[1] Find the smallest K such that
FRONT[K] NULL
[2] Delete and process the front element
in r...
Insertion Algorithm [outline]
[1] Insert ITEM as the rear element in
row M of QUEUE
[2] Exit
Upcoming SlideShare
Loading in …5
×

Lecture 7 data structures and algorithms

1,501 views

Published on

Published in: Education, Technology
  • Be the first to comment

  • Be the first to like this

Lecture 7 data structures and algorithms

  1. 1. Data Structure and Algorithm (CS 102) Ashok K Turuk
  2. 2. Queue • A queue is a linear list of elements in which – deletion can take place only at one end called Front, and – Insertion takes place at one end called Rear • Queues are also known as First-InFirst-Out (FIFO) list
  3. 3. Queue • Queue are represented in two-ways – Linear Array – One-way Linked List
  4. 4. Array representation of Queue • A queue is maintained by a – linear array QUEUE – Two pointer variable • FRONT : Containing the location of the front element of the queue • REAR : Containing • FRONT == NULL indicates that the queue is empty
  5. 5. Queue FRONT: 1 REAR: 4 AA BB CC DD 1 2 3 4 5 … 6 7 N Delete an element FRONT: 2 REAR: 4 1 BB CC DD 2 3 4 5 … 6 7 N Whenever an element is deleted from the queue, the value of FRONT is increased by 1 FRONT = FRONT + 1
  6. 6. Queue FRONT: 2 REAR: 4 BB CC DD 1 2 3 4 … 5 6 7 N Insert an element FRONT: 2 REAR: 5 1 BB CC DD EE 2 3 4 5 6 … 7 Whenever an element is inserted into the queue, the value of REAR is increased by 1 REAR = REAR + 1 N
  7. 7. Queue • REAR = N and Insert an element into queue FRONT: 7 REAR: N 1 2 3 4 5 6 XX … 7 Move the entire queue to the beginning of the array Change the FRONT and REAR accordingly Insert the element This procedure is too expensive ZZ N
  8. 8. Queue • Queue is assumed to be circular • QUEUE[1] comes after QUEUE[N] • Instead of increasing REAR to N +1, we reset REAR = 1 and then assign QUEUE[REAR] = ITEM
  9. 9. Queue • FRONT = N and an element of QUEUE is Deleted FRONT: N REAR: 1 2 3 4 5 6 XX … 7 We reset FRONT = 1, instead of increasing FRONT to N + 1 ZZ N
  10. 10. Queue • QUEUE contain one element FRONT = REAR NULL FRONT: 7 REAR: 7 1 2 3 4 5 6 FRONT = NULL and REAR = NULL XX … 7 N
  11. 11. Algorithm to Insert in Q [1] If FRONT = 1 and REAR = N or if FRONT = REAR + 1 then Print: Overflow and Exit [2] If FRONT = NULL then Set FRONT = 1 and REAR = 1 Else If REAR = N then Set REAR = 1 Else Set REAR = REAR + 1 [3] Set QUEUE[REAR] = ITEM [4] Exit
  12. 12. Queue FRONT: 7 REAR: 6 AA BB CC DD EE FF 1 2 3 4 5 6 FRONT = REAR + 1 [FULL QUEUE] XX … 7 ZZ N
  13. 13. Algorithm to Delete from Q [1] If FRONT = NULL then Print: Underflow and Exit [2] Set ITEM = QUEUE[FRONT] [3] If FRONT = REAR then Set FRONT = NULL and REAR = NULL Else If FRONT = N then Set FRONT = 1 Else Set FRONT = FRONT + 1 [4] Exit
  14. 14. Linked List Representation of Queue • A linked queue is a queue implemented as linked list with two pointer variable FRONT and REAR pointing to the nodes which is in the FRONT and REAR of the queue
  15. 15. Linked List Representation of Queue FRONT CC BB AA X REAR 15
  16. 16. Insertion in a Queue FRONT AA BB NEW CC X REAR DD 16
  17. 17. Insertion in a Queue FRONT AA BB CC X DD REAR 17
  18. 18. Delete from a Queue FRONT CC BB AA X REAR 18
  19. 19. Delete from a Queue FRONT BB AA X REAR 19
  20. 20. Linked Queue • No need to check for overflow condition during insertion • No need to view it as circular for efficient management of space
  21. 21. Insertion [1] NEW -> INFO = ITEM NEW -> LINK = NULL [2] If (FRONT = NULL) then FRONT = REAR = NULL else Set REAR -> LINK = NEW REAR = NEW [3] Exit
  22. 22. Deletion [1] If (FRONT = NULL) then Print: Overflow, and Exit [2] FRONT = FRONT -> LINK [3] Exit
  23. 23. Deque • A deque is a linear list in which elements can be added or removed at either end but not in the middle • Deque is implemented by a circular array DEQUE with pointers LEFT and RIGHT which points to the two end of the deque
  24. 24. Deque • LEFT = NULL indicate deque is empty LEFT: 4 RIGHT: 7 LEFT: 4 RIGHT: 7 1 2 YY 1 3 ZZ 2 3 AA BB CC DD 4 5 6 7 8 4 5 6 WW XX 7 8
  25. 25. Variation of deque • There are two variation of deque [1] Input-restricted queue: Deque which allows insertions at only one end of the list but allows deletion at both ends of the list [2] Output-restricted queue: Deque which allows deletion at only one end of the list but allows insertion at both ends of the list
  26. 26. Deque LEFT: 2 RIGHT: 4 1 A 2 C 3 D 4 5 6 F is added to the right LEFT: 2 RIGHT: 5 1 A 2 C 3 D 4 F 5 6
  27. 27. Deque LEFT: 2 RIGHT: 5 1 A 2 C 3 D 4 F 5 6 Two Letters on right is deleted LEFT: 2 RIGHT: 3 1 A 2 C 3 4 5 6
  28. 28. Deque LEFT: 2 RIGHT: 3 1 A 2 C 3 4 5 6 K, L and M are added to the Left LEFT: 5 RIGHT: 3 K 1 A 2 C 3 4 M 5 L 6
  29. 29. Priority Queue • A priority queue is a collection of elements such that each elements has been assigned a priority and such that the order in which elements are deleted and processed comes from the following rules: [1] Elements of higher priority is processed before any elements of lower priority [2] Two elements with the same priority are processed according to the order in which they were added to the queue
  30. 30. Priority Queue • There are different ways a priority queue can be represented such as [1] One-way List [2] Multiple queue
  31. 31. One-Way List Representation of a Priority Queue [1] Each node in the list will contain three items of information: an information field INFO, a priority number PRN, and a link number LINK [2] A node X precedes a node Y in the list (a) when X has higher priority than Y or (b) when both have same priority but X was added to the list before Y
  32. 32. Queue Head A1 B2 F2 D3 32
  33. 33. Insertion and Deletion • Deletion : Delete the first node in the list. • Insertion: Find the location of Insertion Add an ITEM with priority number N [a] Traverse the list until finding a node X whose priority exceeds N. Insert ITEM in front of node X [b] If no such node is found, insert ITEM as the last element of the list
  34. 34. Array representation of Priority Queue • Separate queue for each level of priority • Each queue will appear in its own circular array and must have its own pair of pointers, FRONT and REAR • If each queue is given the same amount space then a 2D queue can be used
  35. 35. QUEUE FRONT REAR 1 1 2 3 4 5 2 1 0 5 4 2 3 0 1 4 1 2 3 4 5 BB 2 AA CC 3 4 5 DD EE DD FF GG
  36. 36. Deletion Algorithm [outline] [1] Find the smallest K such that FRONT[K] NULL [2] Delete and process the front element in row K of QUEUE [3] Exit
  37. 37. Insertion Algorithm [outline] [1] Insert ITEM as the rear element in row M of QUEUE [2] Exit

×