Presentation is loading. Please wait.

Presentation is loading. Please wait.

Queue.

Similar presentations


Presentation on theme: "Queue."— Presentation transcript:

1 queue

2

3 Avoid confusion

4 Britain Italy

5

6 Applications of Queues
Direct applications Waiting lists, bureaucracy Access to shared resources (e.g., printer) Multiprogramming Simulations Indirect applications Auxiliary data type for algorithms Component of other data types ADS Lecture 11

7 The Queue ADT (GoTa §5.2) Auxiliary queue operations: Exceptions
Queues 11/19/2018 7:59 AM The Queue ADT (GoTa §5.2) The Queue ADT stores arbitrary 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: enqueue(object): inserts an element at the end of the queue object dequeue(): removes and returns the element at the front of the queue Auxiliary queue operations: object front(): returns the element at the front without removing it integer size(): returns the number of elements stored boolean isEmpty(): indicates whether no elements are stored Exceptions Attempting the execution of dequeue on front of an empty queue throws an EmptyQueueException ADS Lecture 11

8

9 Queue interface in Java contd.
/** * Inspects the element at the front of the queue element at the front of the queue EmptyQueueException if the queue is empty */ public E front() throws EmptyQueueException; * Inserts an element at the rear of the queue element new element to be inserted public void enqueue (E element); * Removes the element at the front of the queue element removed public E dequeue() throws EmptyQueueException; } ADS Lecture 11

10 Queue Interface in Java
Java interface corresponding to our Queue ADT Requires the definition of class EmptyQueueException No corresponding built-in Java class public interface Queue<E> { /** * Returns the number of elements in the queue number of elements in the queue */ public int size(); * Returns whether the queue is empty true if queue is empty, false otherwise public boolean isEmpty(); ADS Lecture 11

11 A naïve implementation
We could have a one dimensional array Q An integer pointing to the front of the queue and integer pointing to the end of the queue Q.enqueue(x) would do this increment end Q[end] = x Need also Q.peek(), Q.size(), Q.isEmpty(), Q.isFull() Q.dequeue() would do this discuss!!!

12 A naïve implementation
We could have a one dimensional array Q Q.dequeue() would do this discuss!!! result = Q[front]; for (int i=front+1;i<=end;i++) Q[i-1] = Q[i]; end--; Obviously with tests for empty queue etc. What is the complexity of dequeue?

13 Can use a restricted/disciplined linked list
ADS Lecture 11

14 ADS Lecture 11

15 ADS Lecture 11

16 ADS Lecture 11

17 ADS Lecture 11

18 ADS Lecture 11

19 ADS Lecture 11

20 ADS Lecture 11

21 ADS Lecture 11

22 ADS Lecture 11

23 ADS Lecture 11

24 ADS Lecture 11

25 ADS Lecture 11

26 ADS Lecture 11

27 ADS Lecture 11

28 ADS Lecture 11

29 Array-based Queue Use an array of size N in a circular fashion
Three variables keep track of the front, rear, and size f index of the front element r index immediately past the rear element, where we add new elements (enqueue) size is number of entries in the queue

30 wrapped-around configuration
Array-based Queue Use an array of size N in a circular fashion Three variables keep track of the front, rear, and size f index of the front element r index immediately past the rear element, where we add new elements (enqueue) size is number of entries in the queue normal configuration Q 1 2 r f wrapped-around configuration Q 1 2 f r ADS Lecture 11 30

31 Queue Operations We use the modulo operator (remainder of division)
Operation enqueue throws an exception if the array is full This exception is implementation-dependent Q 1 2 r f Q 1 2 f r Algorithm enqueue(o) if size() = N then throw FullQueueException else Q[r]  o r  (r + 1) mod N Algorithm size() return size Algorithm isEmpty() return size == 0 ADS Lecture 11

32 Queue Operations (cont.)
Operation dequeue throws an exception if the queue is empty This exception is specified in the queue ADT Algorithm dequeue() if isEmpty() then throw EmptyQueueException else o  Q[f] f  (f + 1) mod N return o Pros and cons of array based implementation: Again: quick and easy, all methods run in constant time But again, need good idea of capacity a priori ADS Lecture 11

33 Application: Round Robin Schedulers
We can implement a round robin scheduler using a queue, Q, by repeatedly performing the following steps: e = Q.dequeue() Service element e Q.enqueue(e) The Queue Shared Service 1 . Dequeue the next element 3 Enqueue the serviced element 2 Service the ADS Lecture 11

34 Double-Ended queue (deque)
Supports insertion & deletion at the front and rear of the queue. Pronounced “deck” Fundamental methods are: addFirst(e) addLast(e) removeFirst() removeLast() Since deque requires insertion & removal at both ends of list, using singly linked list would be inefficient Could use a doubly linked list See GoTa p. 213 ADS Lecture 11

35 Your mission See assessed exercise 2

36


Download ppt "Queue."

Similar presentations


Ads by Google