Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.
-
Upload
virgil-phelps -
Category
Documents
-
view
213 -
download
0
Transcript of Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.
![Page 1: Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.](https://reader036.fdocuments.us/reader036/viewer/2022082817/56649daa5503460f94a98335/html5/thumbnails/1.jpg)
CSCI 3333 Data Structures 1
Chapter 6.6, 16+ 13.2 (event-driven simulation)
Queues
![Page 2: Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.](https://reader036.fdocuments.us/reader036/viewer/2022082817/56649daa5503460f94a98335/html5/thumbnails/2.jpg)
CSCI 3333 Data Structures 2
Outline
• Intro. to Queues• java.util.Queue interface• Example programs
![Page 3: Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.](https://reader036.fdocuments.us/reader036/viewer/2022082817/56649daa5503460f94a98335/html5/thumbnails/3.jpg)
CSCI 3333 Data Structures 3
Queue• Typical application of Queue:
A collection designed for holding elements prior to processing.
• Supported operations: – enqueue (n): add n at the back of
the queue– dequeue( ): remove the object at
the front /head of the queue and return that object
– getFront( ): aka. element( ), peek( )return the object at the front of the queue (w/o removing it from the queue)
• All three operations take constant time.
![Page 4: Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.](https://reader036.fdocuments.us/reader036/viewer/2022082817/56649daa5503460f94a98335/html5/thumbnails/4.jpg)
CSCI 3333 Data Structures 4
Queues
• Special features:(typically) First in, first out (FIFO)
- dequeue( ) and getFront( ) returns the least recently added item in the queue.
Exceptions: priority queuesItems in a priority queue are ordered according to some
criteria (example: in OS, types of the processes, user privileges, etc.)
![Page 5: Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.](https://reader036.fdocuments.us/reader036/viewer/2022082817/56649daa5503460f94a98335/html5/thumbnails/5.jpg)
CSCI 3333 Data Structures 5
Applications of Queue
• In any computer applications that need to deal with a waiting list of something.e.g., In operating systems: A process queue collects
processes that are waiting to use the processor or other system resources.
e.g., In event-driven simulation: A priority queue stores the list of events that need to be handled by the simulator.
e.g., ?
![Page 6: Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.](https://reader036.fdocuments.us/reader036/viewer/2022082817/56649daa5503460f94a98335/html5/thumbnails/6.jpg)
CSCI 3333 Data Structures 6
Implementation of Queue• A Queue may be implemented as an Array or a
Linked List.• as a dynamic array: – ArrayQueue.java (Figure 16.8 – 16.17)
private AnyType [ ] theArray; private int currentSize; private int front; private int back; private static final int DEFAULT_CAPACITY = 10;
![Page 7: Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.](https://reader036.fdocuments.us/reader036/viewer/2022082817/56649daa5503460f94a98335/html5/thumbnails/7.jpg)
CSCI 3333 Data Structures 7
![Page 8: Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.](https://reader036.fdocuments.us/reader036/viewer/2022082817/56649daa5503460f94a98335/html5/thumbnails/8.jpg)
CSCI 3333 Data Structures 8
![Page 9: Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.](https://reader036.fdocuments.us/reader036/viewer/2022082817/56649daa5503460f94a98335/html5/thumbnails/9.jpg)
CSCI 3333 Data Structures 9
Implementation of Queue
• as a linked list:– ListQueue.java (Figure 16.23 – 16.27)
See http://sce.uhcl.edu/yang/teaching/JavaProgrammingExamplesandRelatedTopics.htm#queues for an example testing program.
![Page 10: Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.](https://reader036.fdocuments.us/reader036/viewer/2022082817/56649daa5503460f94a98335/html5/thumbnails/10.jpg)
CSCI 3333 Data Structures 10
![Page 11: Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.](https://reader036.fdocuments.us/reader036/viewer/2022082817/56649daa5503460f94a98335/html5/thumbnails/11.jpg)
CSCI 3333 Data Structures 11
Interface: java.util.Queue
http://download.oracle.com/javase/6/docs/api/java/util/Queue.html
Interface Queue<E>
![Page 12: Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.](https://reader036.fdocuments.us/reader036/viewer/2022082817/56649daa5503460f94a98335/html5/thumbnails/12.jpg)
CSCI 3333 Data Structures 12
Array-based queues vs LinkedList-based queues
Operations LinkedList-based Queues (L) Array-based Queues (A)
Run time Both run in constant time per operation.
Space cost Less space. Allocated when a new node is added.
Estimated space requirement.Doubling the array takes up extra space.
Sequential access
L is not as efficient as A.
Code complexity
A is more complicated than L, owing to codes for wraparound and array doubling.
![Page 13: Chapter 6.6, 16 + 13.2 (event-driven simulation) Queues 1CSCI 3333 Data Structures.](https://reader036.fdocuments.us/reader036/viewer/2022082817/56649daa5503460f94a98335/html5/thumbnails/13.jpg)
CSCI 3333 Data Structures 13
Double-Ended Queues (deque)• A queue that allows access at both ends.
Enqueue addFront, addRearDequeue removeFront, removeRear
• In Java: – java.util.Deque interface
http://download.oracle.com/javase/6/docs/api/java/util/Deque.html
– Class ArrayDeque<E>http://download.oracle.com/javase/6/docs/api/java/util/ArrayDeque.html
– The LinkedList class can be used as a stack, queue, or deque, because it implements both the List and the Deque interfaces.
• http://en.wikipedia.org/wiki/Double-ended_queue