Queues 2010 Goodrich Tamassia Queues 1 The Queue

  • Slides: 10
Download presentation
Queues © 2010 Goodrich, Tamassia Queues 1

Queues © 2010 Goodrich, Tamassia Queues 1

The Queue ADT q q The Queue ADT stores arbitrary q objects Insertions and

The Queue ADT q q The Queue ADT stores arbitrary q objects Insertions and deletions follow the first-in first-out scheme Insertions are at the rear of the queue and removals are at the front of the queue Main queue operations: n n enqueue(object): inserts an element at the end of the queue q object dequeue(): removes and returns the element at the front of the queue © 2010 Goodrich, Tamassia Queues Auxiliary queue operations: n n n object front(): returns the element at the front without removing it integer size(): returns the number of elements stored boolean is. Empty(): indicates whether no elements are stored Exceptions n Attempting the execution of dequeue or front on an empty queue throws an Empty. Queue. Exception 2

Example Operation enqueue(5) enqueue(3) dequeue() enqueue(7) dequeue() front() dequeue() is. Empty() enqueue(9) enqueue(7) size()

Example Operation enqueue(5) enqueue(3) dequeue() enqueue(7) dequeue() front() dequeue() is. Empty() enqueue(9) enqueue(7) size() enqueue(3) enqueue(5) dequeue() © 2010 Goodrich, Tamassia – – 5 – 3 7 7 “error” – – 2 – – 9 Output Q (5) (5, 3) (3, 7) (7) () () true () (9, 7) (9, 7, 3) (9, 7, 3, 5) (7, 3, 5) Queues 3

Applications of Queues q Direct applications n n n q Waiting lists, bureaucracy Access

Applications of Queues q Direct applications n n n q Waiting lists, bureaucracy Access to shared resources (e. g. , printer) Multiprogramming Indirect applications n n Auxiliary data structure for algorithms Component of other data structures © 2010 Goodrich, Tamassia Queues 4

Array-based Queue q q Use an array of size N in a circular fashion

Array-based Queue q q Use an array of size N in a circular fashion Two variables keep track of the front and rear f index of the front element r index immediately past the rear element q Array location r is kept empty normal configuration Q 0 1 2 f r wrapped-around configuration Q 0 1 2 © 2010 Goodrich, Tamassia r f Queues 5

Queue Operations q We use the modulo operator (remainder of division) Algorithm size() return

Queue Operations q We use the modulo operator (remainder of division) Algorithm size() return (N f + r) mod N Algorithm is. Empty() return (f = r) Q 0 1 2 f 0 1 2 r r Q © 2010 Goodrich, Tamassia f Queues 6

Queue Operations (cont. ) q q Operation enqueue throws an exception if the array

Queue Operations (cont. ) q q Operation enqueue throws an exception if the array is full This exception is implementationdependent Algorithm enqueue(o) if size() = N 1 then throw Full. Queue. Exception else Q[r] o r (r + 1) mod N Q 0 1 2 f 0 1 2 r r Q © 2010 Goodrich, Tamassia f Queues 7

Queue Operations (cont. ) q q Operation dequeue throws an exception if the queue

Queue Operations (cont. ) q q Operation dequeue throws an exception if the queue is empty This exception is specified in the queue ADT Algorithm dequeue() if is. Empty() then throw Empty. Queue. Exception else o Q[f] f (f + 1) mod N return o Q 0 1 2 f 0 1 2 r r Q © 2010 Goodrich, Tamassia f Queues 8

Queue Interface in Java q q q Java interface corresponding to our Queue ADT

Queue Interface in Java q q q Java interface corresponding to our Queue ADT Requires the definition of class Empty. Queue. Exce ption No corresponding built-in Java class © 2010 Goodrich, Tamassia public interface Queue<E> { public int size(); public boolean is. Empty(); public E front() throws Empty. Queue. Exception; public void enqueue(E element); public E dequeue() throws Empty. Queue. Exception; Queues 9

Application: Round Robin Schedulers We can implement a round robin scheduler using a queue

Application: Round Robin Schedulers We can implement a round robin scheduler using a queue Q by repeatedly performing the following steps: q 1. 2. 3. e = Q. dequeue() Service element e Q. enqueue(e) Queue Dequeue Enqueue Shared Service © 2010 Goodrich, Tamassia Queues 10