SlideShare une entreprise Scribd logo
1  sur  31
Circular Queue & Priority Queue

1
Queue (Linear Queue)
• It is a linear data structure consisting of list of items.
• In queue, data elements are added at one end, called the rear and removed from another
end, called the front of the list.
• Two basic operations are associated with queue:

7

1. “Insert” operation is used to insert an element into a queue.
2. “Delete” operation is used to delete an element from a queue.
●

6

FIFO list

EEE

1

Queue: AAA, BBB, CCC, DDD, EEE

AAA

2

BBB

3

4

CCC

DDD

5

EEE

6

7

5

DDD

4

CCC

3

BBB

• Example:

2

AAA

1

Front

Rear
09/10/08

Rear
Front
2
Drawback of Linear Queue
• Once the queue is full, even though few elements from the front are deleted and

some occupied space is relieved, it is not possible to add anymore new elements,
as the rear has already reached the Queue’s rear most position.

Circular Queue
• This queue is not linear but circular.

• Its structure can be like the following figure:
• In circular queue, once the Queue is full the
"First" element of the Queue becomes the
"Rear" most element, if and only if the "Front"
has moved forward. otherwise it will again be

Figure: Circular Queue having
Rear = 5 and Front = 0

a "Queue overflow" state.
3
Algorithms for Insert and Delete Operations in Circular Queue
For Insert Operation
Insert-Circular-Q(CQueue, Rear, Front, N, Item)

CQueue is a circular queue where to store data.
Rear represents the location in which the data element is to be inserted and
Front represents the location from which the data element is to be removed.
Here N is the maximum size of CQueue and finally, Item is the new item to be

added.
Initailly Rear = 0 and Front = 0.
1. If Front = 0 and Rear = 0 then Set Front := 1 and go to step 4.
2. If Front =1 and Rear = N or Front = Rear + 1
then Print: “Circular Queue Overflow” and Return.
3. If Rear = N then Set Rear := 1 and go to step 5.
4. Set Rear := Rear + 1
5. Set CQueue [Rear] := Item.
6. Return

4
For Delete Operation
Delete-Circular-Q(CQueue, Front, Rear, Item)
Here, CQueue is the place where data are stored. Rear represents the location in
which the data element is to be inserted and Front represents the location from

which the data element is to be removed. Front element is assigned to Item.
Initially, Front = 1.
1. If Front = 0 then
Print: “Circular Queue Underflow” and Return.

/*..Delete without Insertion

2. Set Item := CQueue [Front]
3. If Front = N then Set Front = 1 and Return.
4. If Front = Rear then Set Front = 0 and Rear = 0 and Return.
5. Set Front := Front + 1
6. Return.

5
Example: Consider the following circular queue with N = 5.

1. Initially, Rear = 0, Front = 0.

4. Insert 20, Rear = 3, Front = 0.
Front

Rear

2. Insert 10, Rear = 1, Front = 1.
Rear
Front

5. Insert 70, Rear = 4, Front = 1.
Front

Rear

3. Insert 50, Rear = 2, Front = 1.
Front

6. Delete front, Rear = 4, Front = 2.
Front

Rear

Rear
6
7. Insert 100, Rear = 5, Front = 2.
Front

10. Delete front, Rear = 1, Front = 3.
Rear

Front
Rear

8. Insert 40, Rear = 1, Front = 2.

11. Delete front, Rear = 1, Front = 4.
Rear

Rear

Front

Front

12. Delete front, Rear = 1, Front = 5.
9. Insert 140, Rear = 1, Front = 2.
Rear
As Front = Rear + 1, so Queue overflow.
Rear

Front
Front

7
Insertion
qfull() {
if(front==(rear+1)%size)
return 1;
else
return 0;
}

int insert(int item)
{
if(qfull())
printf("circular q is full");
else
{
if(front==-1)
front=rear=0;
else
rear=(rear+1)%size;
que[rear]=item;
}
}
Deletion
int qempty()
{
if(front==-1)
return 1;
else
return 0;
}
int delete()
{
int item;
if(qempty())
printf("queue is empty");
else
{
item=que[front];
if(front==rear) {
front=rear=-1;
}
else
front=(front+1)%size;
printf("the deleted item is%d ",item);
}
Display
void display()
{
int i;
if(qempty())
{
printf("queue is empty");
return;
}
i=front;
while(i!=rear)
{
printf(“%d”,que[i]);
i=(i+1)%size;
}
Printf(“%d”,que[i]);
}
Priority Queue
Priority Queue

A Priority Queue – a different kind of queue.
Similar to a regular queue:
insert in rear,
remove from front.

Items in priority queue are ordered by some key
Item with the lowest key / highest key is always at the front
from where they are removed.
Items then „inserted‟ in „proper‟ position
Idea behind the Priority Queue is simple:
Is a queue
But the items are ordered by a key.
Implies your ‘position’ in the queue may be changed by
the arrival of a new item.
12
Applications of Priority Queues
Many, many applications.
Scheduling queues for a processor, print queues, transmit
queues, backlogs, etc.….

This means this item will be in the front of queue
“Obtained” via a remove().
Note: a priority queue is no longer FIFO!
You will still remove from front of queue, but
insertions are governed by a priority.
13
Priority Queues: Access
remove()
So, the first item has priority and can be retrieved (removed) quickly and
returned to calling environment.
Hence, „remove()‟ is easy (and will take O(1) time)

insert()
But, we want to insert quickly. Must go into proper position.
For our purposes here: Implementing data structure: array;
• slow to insert(), but for
small number of items in the pqueue, and
where insertion speed is not critical,

• this is the simplest and best approach.

14
Priority Queues
Operations performed on priority queues
1) Find an element,
2) Insert a new element

3) Delete an element, etc.
Two kinds of (Min, Max) priority queues exist:
• In a Min priority queue, find/delete operation finds/deletes the
element with minimum priority

• In a Max priority queue, find/delete operation finds/deletes the
element with maximum priority
• Two or more elements can have the same priority

15
Implementation of Priority Queues
Implemented using heaps and leftist trees
• Heap is a complete binary tree that is efficiently stored using
the array-based representation
• Leftist tree is a linked data structure suitable for the
implementation of a priority queue

16
Heap Operations
When n is the number of elements (heap size),
• Insertion  O(log2n)
• Deletion  O(log2n)
• Initialization  O(n)

17
Insertion into a Max Heap
9

8

7

6

5

7

1

5

2

6

• New element is 5
• Are we finished?

18
Insertion into a Max Heap
9

8

7

6

5

7

1

20

2

6

• New element is 20
• Are we finished?

19
Insertion into a Max Heap
9

8

7

6

5

20

1

7

2

6
• Exchange the positions with 7
• Are we finished?

20
Insertion into a Max Heap
9

20

7

6

5

8

1

7

2

6
• Exchange the positions with 8
• Are we finished?

21
Insertion into a Max Heap
20

9

7

6

5

8

1

7

2

6
• Exchange the positions with 9
• Are we finished?

22
Complexity of Insertion
At each level, we do (1) work
Thus the time complexity is O(height) =
O(log2n), where n is the heap size

23
Deletion from a Max Heap
20

15

7

6

5

9

1

7

2

8

6

• Max element is in the root
• What happens when we
delete an element?

24
Deletion from a Max Heap
15

7

6

5

9

1

7

2

8

6

• After the max element is
removed.
• Are we finished?

25
Deletion from a Max Heap
15

7

6

5

9

1

7

2

8

6

• Heap with 10 nodes.
• Reinsert 8 into the heap.

26
Deletion from a Max Heap
8

15

7

6

5

9

1

7

2

6

• Reinsert 8 into the heap.
• Are we finished?

27
Deletion from a Max Heap
15

8

7

6

5

9

1

7

2

6

• Exchange the position with 15
• Are we finished?

28
Deletion from a Max Heap
15

9

7

6

5

8

1

7

2

6

• Exchange the position with 9
• Are we finished?

29
Complexity of Deletion
• The time complexity of deletion is the same as
insertion
• At each level, we do (1) work
• Thus the time complexity is O(height) =
O(log2n), where n is the heap size

30
END!!!

31

Contenu connexe

Tendances

Introduction to stack
Introduction to stackIntroduction to stack
Introduction to stack
vaibhav2910
 

Tendances (20)

Circular link list.ppt
Circular link list.pptCircular link list.ppt
Circular link list.ppt
 
Queue in Data Structure
Queue in Data Structure Queue in Data Structure
Queue in Data Structure
 
Priority queue in DSA
Priority queue in DSAPriority queue in DSA
Priority queue in DSA
 
Queue AS an ADT (Abstract Data Type)
Queue AS an ADT (Abstract Data Type)Queue AS an ADT (Abstract Data Type)
Queue AS an ADT (Abstract Data Type)
 
Queue - Data Structure - Notes
Queue - Data Structure - NotesQueue - Data Structure - Notes
Queue - Data Structure - Notes
 
Data structure stack&queue basics
Data structure stack&queue   basicsData structure stack&queue   basics
Data structure stack&queue basics
 
Data Structures - Lecture 9 [Stack & Queue using Linked List]
 Data Structures - Lecture 9 [Stack & Queue using Linked List] Data Structures - Lecture 9 [Stack & Queue using Linked List]
Data Structures - Lecture 9 [Stack & Queue using Linked List]
 
sparse matrix in data structure
sparse matrix in data structuresparse matrix in data structure
sparse matrix in data structure
 
Linked list
Linked list Linked list
Linked list
 
Data Structure and Algorithms Binary Search Tree
Data Structure and Algorithms Binary Search TreeData Structure and Algorithms Binary Search Tree
Data Structure and Algorithms Binary Search Tree
 
Data Structure (Queue)
Data Structure (Queue)Data Structure (Queue)
Data Structure (Queue)
 
Polynomial reppresentation using Linkedlist-Application of LL.pptx
Polynomial reppresentation using Linkedlist-Application of LL.pptxPolynomial reppresentation using Linkedlist-Application of LL.pptx
Polynomial reppresentation using Linkedlist-Application of LL.pptx
 
Doubly Linked List
Doubly Linked ListDoubly Linked List
Doubly Linked List
 
Binary search tree(bst)
Binary search tree(bst)Binary search tree(bst)
Binary search tree(bst)
 
Introduction to stack
Introduction to stackIntroduction to stack
Introduction to stack
 
Stack
StackStack
Stack
 
Queue in Data Structure
Queue in Data StructureQueue in Data Structure
Queue in Data Structure
 
Stack
StackStack
Stack
 
Quick sort
Quick sortQuick sort
Quick sort
 
Different Sorting tecniques in Data Structure
Different Sorting tecniques in Data StructureDifferent Sorting tecniques in Data Structure
Different Sorting tecniques in Data Structure
 

En vedette

Algorithm: priority queue
Algorithm: priority queueAlgorithm: priority queue
Algorithm: priority queue
Tareq Hasan
 
Deque and its applications
Deque and its applicationsDeque and its applications
Deque and its applications
Jsaddam Hussain
 
Applications of queues ii
Applications of queues   iiApplications of queues   ii
Applications of queues ii
Tech_MX
 
Circular linked list
Circular linked listCircular linked list
Circular linked list
dchuynh
 

En vedette (20)

Queue data structure
Queue data structureQueue data structure
Queue data structure
 
Queue Data Structure
Queue Data StructureQueue Data Structure
Queue Data Structure
 
Circular queues
Circular queuesCircular queues
Circular queues
 
Algorithm: priority queue
Algorithm: priority queueAlgorithm: priority queue
Algorithm: priority queue
 
Deque and its applications
Deque and its applicationsDeque and its applications
Deque and its applications
 
Ppt presentation of queues
Ppt presentation of queuesPpt presentation of queues
Ppt presentation of queues
 
Queue as data_structure
Queue as data_structureQueue as data_structure
Queue as data_structure
 
deque and it applications
deque and it applicationsdeque and it applications
deque and it applications
 
Priority queues
Priority queuesPriority queues
Priority queues
 
Queue Data Structure (w/ php egs)
Queue Data Structure (w/ php egs)Queue Data Structure (w/ php egs)
Queue Data Structure (w/ php egs)
 
Notes DATA STRUCTURE - queue
Notes DATA STRUCTURE - queueNotes DATA STRUCTURE - queue
Notes DATA STRUCTURE - queue
 
Priority queue
Priority queuePriority queue
Priority queue
 
Applications of queues ii
Applications of queues   iiApplications of queues   ii
Applications of queues ii
 
23 priority queue
23 priority queue23 priority queue
23 priority queue
 
Circular linked list
Circular linked listCircular linked list
Circular linked list
 
queue & its applications
queue & its applicationsqueue & its applications
queue & its applications
 
STACKS IN DATASTRUCTURE
STACKS IN DATASTRUCTURESTACKS IN DATASTRUCTURE
STACKS IN DATASTRUCTURE
 
Circular queue
Circular queueCircular queue
Circular queue
 
computer notes - Priority queue
computer notes -  Priority queuecomputer notes -  Priority queue
computer notes - Priority queue
 
Heaps & priority queues
Heaps & priority queuesHeaps & priority queues
Heaps & priority queues
 

Similaire à My lectures circular queue

08_Queues.pptx showing how que works given vertex
08_Queues.pptx showing how que works given vertex08_Queues.pptx showing how que works given vertex
08_Queues.pptx showing how que works given vertex
SadiaSharmin40
 

Similaire à My lectures circular queue (20)

Queue
QueueQueue
Queue
 
LEC4-DS ALGO.pdf
LEC4-DS  ALGO.pdfLEC4-DS  ALGO.pdf
LEC4-DS ALGO.pdf
 
Queue
QueueQueue
Queue
 
Stack.pptx
Stack.pptxStack.pptx
Stack.pptx
 
08_Queues.pptx showing how que works given vertex
08_Queues.pptx showing how que works given vertex08_Queues.pptx showing how que works given vertex
08_Queues.pptx showing how que works given vertex
 
4. Queues in Data Structure
4. Queues in Data Structure4. Queues in Data Structure
4. Queues in Data Structure
 
Lecture 2d queues
Lecture 2d queuesLecture 2d queues
Lecture 2d queues
 
Unit 4 queue
Unit   4 queueUnit   4 queue
Unit 4 queue
 
Queues in C++
Queues in C++Queues in C++
Queues in C++
 
Queues.ppt
Queues.pptQueues.ppt
Queues.ppt
 
Queue(lecture8).pptx
Queue(lecture8).pptxQueue(lecture8).pptx
Queue(lecture8).pptx
 
Queues presentation
Queues presentationQueues presentation
Queues presentation
 
Queues & ITS TYPES
Queues & ITS TYPESQueues & ITS TYPES
Queues & ITS TYPES
 
queue.pptx
queue.pptxqueue.pptx
queue.pptx
 
Detalied information of queue
Detalied information of queueDetalied information of queue
Detalied information of queue
 
Queue
QueueQueue
Queue
 
@Chapter 4 DSA Part II.pptx
@Chapter 4 DSA Part II.pptx@Chapter 4 DSA Part II.pptx
@Chapter 4 DSA Part II.pptx
 
VCE Unit 03vv.pptx
VCE Unit 03vv.pptxVCE Unit 03vv.pptx
VCE Unit 03vv.pptx
 
Queue
QueueQueue
Queue
 
Bsc cs ii dfs u-2 linklist,stack,queue
Bsc cs ii  dfs u-2 linklist,stack,queueBsc cs ii  dfs u-2 linklist,stack,queue
Bsc cs ii dfs u-2 linklist,stack,queue
 

My lectures circular queue

  • 1. Circular Queue & Priority Queue 1
  • 2. Queue (Linear Queue) • It is a linear data structure consisting of list of items. • In queue, data elements are added at one end, called the rear and removed from another end, called the front of the list. • Two basic operations are associated with queue: 7 1. “Insert” operation is used to insert an element into a queue. 2. “Delete” operation is used to delete an element from a queue. ● 6 FIFO list EEE 1 Queue: AAA, BBB, CCC, DDD, EEE AAA 2 BBB 3 4 CCC DDD 5 EEE 6 7 5 DDD 4 CCC 3 BBB • Example: 2 AAA 1 Front Rear 09/10/08 Rear Front 2
  • 3. Drawback of Linear Queue • Once the queue is full, even though few elements from the front are deleted and some occupied space is relieved, it is not possible to add anymore new elements, as the rear has already reached the Queue’s rear most position. Circular Queue • This queue is not linear but circular. • Its structure can be like the following figure: • In circular queue, once the Queue is full the "First" element of the Queue becomes the "Rear" most element, if and only if the "Front" has moved forward. otherwise it will again be Figure: Circular Queue having Rear = 5 and Front = 0 a "Queue overflow" state. 3
  • 4. Algorithms for Insert and Delete Operations in Circular Queue For Insert Operation Insert-Circular-Q(CQueue, Rear, Front, N, Item) CQueue is a circular queue where to store data. Rear represents the location in which the data element is to be inserted and Front represents the location from which the data element is to be removed. Here N is the maximum size of CQueue and finally, Item is the new item to be added. Initailly Rear = 0 and Front = 0. 1. If Front = 0 and Rear = 0 then Set Front := 1 and go to step 4. 2. If Front =1 and Rear = N or Front = Rear + 1 then Print: “Circular Queue Overflow” and Return. 3. If Rear = N then Set Rear := 1 and go to step 5. 4. Set Rear := Rear + 1 5. Set CQueue [Rear] := Item. 6. Return 4
  • 5. For Delete Operation Delete-Circular-Q(CQueue, Front, Rear, Item) Here, CQueue is the place where data are stored. Rear represents the location in which the data element is to be inserted and Front represents the location from which the data element is to be removed. Front element is assigned to Item. Initially, Front = 1. 1. If Front = 0 then Print: “Circular Queue Underflow” and Return. /*..Delete without Insertion 2. Set Item := CQueue [Front] 3. If Front = N then Set Front = 1 and Return. 4. If Front = Rear then Set Front = 0 and Rear = 0 and Return. 5. Set Front := Front + 1 6. Return. 5
  • 6. Example: Consider the following circular queue with N = 5. 1. Initially, Rear = 0, Front = 0. 4. Insert 20, Rear = 3, Front = 0. Front Rear 2. Insert 10, Rear = 1, Front = 1. Rear Front 5. Insert 70, Rear = 4, Front = 1. Front Rear 3. Insert 50, Rear = 2, Front = 1. Front 6. Delete front, Rear = 4, Front = 2. Front Rear Rear 6
  • 7. 7. Insert 100, Rear = 5, Front = 2. Front 10. Delete front, Rear = 1, Front = 3. Rear Front Rear 8. Insert 40, Rear = 1, Front = 2. 11. Delete front, Rear = 1, Front = 4. Rear Rear Front Front 12. Delete front, Rear = 1, Front = 5. 9. Insert 140, Rear = 1, Front = 2. Rear As Front = Rear + 1, so Queue overflow. Rear Front Front 7
  • 8. Insertion qfull() { if(front==(rear+1)%size) return 1; else return 0; } int insert(int item) { if(qfull()) printf("circular q is full"); else { if(front==-1) front=rear=0; else rear=(rear+1)%size; que[rear]=item; } }
  • 9. Deletion int qempty() { if(front==-1) return 1; else return 0; } int delete() { int item; if(qempty()) printf("queue is empty"); else { item=que[front]; if(front==rear) { front=rear=-1; } else front=(front+1)%size; printf("the deleted item is%d ",item); }
  • 10. Display void display() { int i; if(qempty()) { printf("queue is empty"); return; } i=front; while(i!=rear) { printf(“%d”,que[i]); i=(i+1)%size; } Printf(“%d”,que[i]); }
  • 12. Priority Queue A Priority Queue – a different kind of queue. Similar to a regular queue: insert in rear, remove from front. Items in priority queue are ordered by some key Item with the lowest key / highest key is always at the front from where they are removed. Items then „inserted‟ in „proper‟ position Idea behind the Priority Queue is simple: Is a queue But the items are ordered by a key. Implies your ‘position’ in the queue may be changed by the arrival of a new item. 12
  • 13. Applications of Priority Queues Many, many applications. Scheduling queues for a processor, print queues, transmit queues, backlogs, etc.…. This means this item will be in the front of queue “Obtained” via a remove(). Note: a priority queue is no longer FIFO! You will still remove from front of queue, but insertions are governed by a priority. 13
  • 14. Priority Queues: Access remove() So, the first item has priority and can be retrieved (removed) quickly and returned to calling environment. Hence, „remove()‟ is easy (and will take O(1) time) insert() But, we want to insert quickly. Must go into proper position. For our purposes here: Implementing data structure: array; • slow to insert(), but for small number of items in the pqueue, and where insertion speed is not critical, • this is the simplest and best approach. 14
  • 15. Priority Queues Operations performed on priority queues 1) Find an element, 2) Insert a new element 3) Delete an element, etc. Two kinds of (Min, Max) priority queues exist: • In a Min priority queue, find/delete operation finds/deletes the element with minimum priority • In a Max priority queue, find/delete operation finds/deletes the element with maximum priority • Two or more elements can have the same priority 15
  • 16. Implementation of Priority Queues Implemented using heaps and leftist trees • Heap is a complete binary tree that is efficiently stored using the array-based representation • Leftist tree is a linked data structure suitable for the implementation of a priority queue 16
  • 17. Heap Operations When n is the number of elements (heap size), • Insertion  O(log2n) • Deletion  O(log2n) • Initialization  O(n) 17
  • 18. Insertion into a Max Heap 9 8 7 6 5 7 1 5 2 6 • New element is 5 • Are we finished? 18
  • 19. Insertion into a Max Heap 9 8 7 6 5 7 1 20 2 6 • New element is 20 • Are we finished? 19
  • 20. Insertion into a Max Heap 9 8 7 6 5 20 1 7 2 6 • Exchange the positions with 7 • Are we finished? 20
  • 21. Insertion into a Max Heap 9 20 7 6 5 8 1 7 2 6 • Exchange the positions with 8 • Are we finished? 21
  • 22. Insertion into a Max Heap 20 9 7 6 5 8 1 7 2 6 • Exchange the positions with 9 • Are we finished? 22
  • 23. Complexity of Insertion At each level, we do (1) work Thus the time complexity is O(height) = O(log2n), where n is the heap size 23
  • 24. Deletion from a Max Heap 20 15 7 6 5 9 1 7 2 8 6 • Max element is in the root • What happens when we delete an element? 24
  • 25. Deletion from a Max Heap 15 7 6 5 9 1 7 2 8 6 • After the max element is removed. • Are we finished? 25
  • 26. Deletion from a Max Heap 15 7 6 5 9 1 7 2 8 6 • Heap with 10 nodes. • Reinsert 8 into the heap. 26
  • 27. Deletion from a Max Heap 8 15 7 6 5 9 1 7 2 6 • Reinsert 8 into the heap. • Are we finished? 27
  • 28. Deletion from a Max Heap 15 8 7 6 5 9 1 7 2 6 • Exchange the position with 15 • Are we finished? 28
  • 29. Deletion from a Max Heap 15 9 7 6 5 8 1 7 2 6 • Exchange the position with 9 • Are we finished? 29
  • 30. Complexity of Deletion • The time complexity of deletion is the same as insertion • At each level, we do (1) work • Thus the time complexity is O(height) = O(log2n), where n is the heap size 30