This document discusses queues and priority queues. It defines a queue as a first-in first-out (FIFO) linear data structure with elements added to the rear and removed from the front. Circular queues are introduced to address the limitation of linear queues filling up. Priority queues are also covered, with elements ordered by priority and the highest or lowest priority element always at the front. Implementation of priority queues using heaps is explained, with insertion and deletion operations having time complexity of O(log n).
In this document
Powered by AI
Overview of Circular Queue and Priority Queue.
Definition of linear queue, its operations such as insert and delete, and FIFO principle.
Issues with linear queue: cannot add new elements when capacity is full despite deletions.
Insert operation for circular queue including handling of overflow conditions.
Delete operation for circular queue including handling of underflow conditions.
Step-by-step example of insert and delete operations in a circular queue.
Code implementation for inserting an item in circular queue with full condition check.
Code implementation for deleting an item from a circular queue with empty condition check.
Code for displaying elements of circular queue and handling empty queue condition.
Overview of priority queue structure and basic operations.
Item ordering based on priority in a priority queue and how insertions alter positions.
Real-world applications of priority queues in scheduling, print management, and more.
Operational details for priority queues including finding, inserting, and deleting elements.
Methods for implementing priority queues using heaps and leftist trees.
Time complexities for insertion and deletion operations in heaps.
Step-by-step process for inserting elements into a max heap and necessary adjustments.
Time complexity analysis for the insertion operation in a heap.
Step-by-step deletion process in max heap, adjustments made after removing maximum element.
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 LinearQueue • 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 Insertand 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 thefollowing 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
Priority Queue A PriorityQueue – 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 PriorityQueues 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 performedon 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 PriorityQueues 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 nis the number of elements (heap size), • Insertion O(log2n) • Deletion O(log2n) • Initialization O(n) 17
18.
Insertion into aMax Heap 9 8 7 6 5 7 1 5 2 6 • New element is 5 • Are we finished? 18
19.
Insertion into aMax Heap 9 8 7 6 5 7 1 20 2 6 • New element is 20 • Are we finished? 19
20.
Insertion into aMax Heap 9 8 7 6 5 20 1 7 2 6 • Exchange the positions with 7 • Are we finished? 20
21.
Insertion into aMax Heap 9 20 7 6 5 8 1 7 2 6 • Exchange the positions with 8 • Are we finished? 21
22.
Insertion into aMax Heap 20 9 7 6 5 8 1 7 2 6 • Exchange the positions with 9 • Are we finished? 22
23.
Complexity of Insertion Ateach level, we do (1) work Thus the time complexity is O(height) = O(log2n), where n is the heap size 23
24.
Deletion from aMax 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 aMax Heap 15 7 6 5 9 1 7 2 8 6 • After the max element is removed. • Are we finished? 25
26.
Deletion from aMax Heap 15 7 6 5 9 1 7 2 8 6 • Heap with 10 nodes. • Reinsert 8 into the heap. 26
27.
Deletion from aMax Heap 8 15 7 6 5 9 1 7 2 6 • Reinsert 8 into the heap. • Are we finished? 27
28.
Deletion from aMax Heap 15 8 7 6 5 9 1 7 2 6 • Exchange the position with 15 • Are we finished? 28
29.
Deletion from aMax 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