queues and priority queues - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront...
TRANSCRIPT
![Page 1: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/1.jpg)
QUEUES AND PRIORITY QUEUESProblem Solving with Computers-II
![Page 2: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/2.jpg)
How is PA03 going?A. Done B. On track to finish C. Having trouble with the checkpoint (design) D. Just started E. Haven’t started
![Page 3: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/3.jpg)
Evaluating a fully parenthesized infix expression
!3
pevaluate the sub expressionE'in the 2 stacks
L dg
315 115 41I 6121 I 15 381 I 5 S2 16operands operators g 2 CO
![Page 4: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/4.jpg)
Lab 05, part2 : Evaluating post fix expressions using a single stackPostfix: 7 3 5 * + 4 2 / - Infix: ( 7 + ( 3 * 5) ) – ( 4 / 2 )
!4
20
EEOne stack
![Page 5: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/5.jpg)
The Queue Operations• A queue is like a line of people waiting for a bank teller. • The queue has a front and a rear.
$ $
FrontRear
STL queuepushaK inserts
front 11 enqueuen
emptypopdeletefrontdequene
![Page 6: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/6.jpg)
The Queue Operations• New people must enter the queue at the rear. The C++ queue class calls this a push, although it is usually called an enqueue operation.
$ $
FrontRear
![Page 7: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/7.jpg)
The Queue Operations• When an item is taken from the queue, it always comes from the front. The C++ queue calls this a pop, although it is usually called a dequeue operation.
$ $
FrontRear
![Page 8: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/8.jpg)
The Queue Class• The C++ standard template
library has a queue template class.
• The template parameter is the type of the items that can be put in the queue.
template <class Item> class queue<Item> {
public:
queue( );
void push(const Item& entry);
void pop( );
bool empty( ) const;
Item front( ) const;
…
};
![Page 9: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/9.jpg)
Queue via stacksImplement a MyQueue class which implements a queue using two stacks
!9
class MyQueuepublicvoid pushcint item
void pop cint frontCbool empty
privatestack Lint Sl
Stacie int S2
![Page 10: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/10.jpg)
Priority Queues or Heaps Min-Heaps Max-Heap BST
• Insert : • Min: • Delete Min: • Max • Delete Max Choose heap if you are doing repeated insert/delete/(min OR max) operations
Applications:• Efficient sort • Finding the median of a sequence of numbers • Compression codes
balanced
I oiii.si 5 ouEI ooi.es.niOCI oclogwOClogn oceogn
Huffman code
![Page 11: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/11.jpg)
Heaps as binary trees• Rooted binary tree that is as complete as possible • In a min-Heap, each node satisfies the following heap property:
key(x)<= key(children of x)
6
10
40
12
32 4743
Min Heap with 9 nodes
45 41 Where is the minimum element?
BinaryTrees
64Bst Heap
kO ministheroot
Attakeys Ex keyed
Bst property4 Ocloga
![Page 12: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/12.jpg)
Heaps as binary trees• Rooted binary tree that is as complete as possible • In a max-Heap, each node satisfies the following heap property:
key(x)>= key(children of x)
47
41
12
45
32 4043
Max Heap with 9 nodes
6 10 Where is the maximum element?
![Page 13: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/13.jpg)
Identifying heapsStarting with the following min Heap which of the following operations will result in something that is NOT a min Heap
6
10
40
12
32 4743
45 41
A. Swap the nodes 40 and 32 B. Swap the nodes 32 and 43 C. Swap the nodes 43 and 40 D. Insert 50 as the left child of 45 E. C&D
![Page 14: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/14.jpg)
Structure: Complete binary treeA heap is a complete binary tree: Each level is as full as possible. Nodes on the bottom level are as far left as possible
6
10
40
12
32 4743
45 41
![Page 15: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/15.jpg)
Insert 32 into a heap• Insert key(x) in the first open slot at the last level of tree (going from left to right) • If the heap property is not violated - Done • Else: while(key(parent(x))>key(x)) swap the key(x) with key(parent(x))
12
41
45
47
32
![Page 16: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/16.jpg)
Insert 50, then 35, then 86
10
40
12
32 4743
45 41
![Page 17: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/17.jpg)
Delete min• Replace the root with the rightmost node at the last level • “Bubble down”- swap node with one of the children until the heap
property is restored
6
10
40
8
32 4712
45 41 50 35 43
![Page 18: QUEUES AND PRIORITY QUEUES - ucsb-cs24.github.io · front 11 enqueuen empty pop deletefront dequene. The Queue Operations •New people must enter the queue at the rear. The C++ queue](https://reader030.vdocuments.us/reader030/viewer/2022040712/5e157326ea7553703e52cccb/html5/thumbnails/18.jpg)
Next lecture• Under the hood of priority queues