Download presentation
Presentation is loading. Please wait.
1
queue
3
Avoid confusion
4
Britain Italy
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
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.