1 / 19

Queues

The Queue ADT stores objects following first-in, first-out scheme. Learn main and auxiliary operations, exceptions, applications, and implementations using circular arrays in Python. Explore use cases in programming and beyond.

dhasbrouck
Download Presentation

Queues

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Queues

  2. Queues 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 first(): returns the element at the front without removing it integer len(): returns the number of elements stored boolean is_empty(): indicates whether no elements are stored Exceptions Attempting the execution of dequeue or front on an empty queue throws an EmptyQueueException The Queue ADT

  3. Queues Example

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

  5. Queues 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 Array location r is kept empty Q 0 1 2 f r Q 0 1 2 r f Array-based Queue normal configuration wrapped-around configuration

  6. Queues Q 0 1 2 f r Q 0 1 2 r f Queue Operations Algorithmsize() return(N-f +r) mod N AlgorithmisEmpty() return(f=r) • We use the modulo operator (remainder of division)

  7. Queues Q 0 1 2 f r Q 0 1 2 r f Queue Operations (cont.) Algorithmenqueue(o) ifsize()=N 1then throw FullQueueException else Q[r] o r(r + 1) mod N • Operation enqueue throws an exception if the array is full • This exception is implementation-dependent

  8. Queues Q 0 1 2 f r Q 0 1 2 r f Queue Operations (cont.) Algorithmdequeue() ifisEmpty()then throw EmptyQueueException else oQ[f] f(f + 1) mod N returno • Operation dequeue throws an exception if the queue is empty • This exception is specified in the queue ADT

  9. Queues Queue in Python • Use the following three instance variables: • _data: is a reference to a list instance with a fixed capacity. • _size: is an integer representing the current number of elements stored in the queue (as opposed to the length of the data list). • _front: is an integer that represents the index within data of the first element of the queue (assuming the queue is not empty).

  10. Queue in Python (1/3)

  11. Queue in Python (2/3)

  12. Queue in Python (3/3)

  13. Queues 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) Queue Dequeue Enqueue Shared Service

  14. Double-Ended Queues • queue-like data structure that supports insertion and deletion at both the front and the back of the queue. • Such a structure is called a doubleended queue, or deque, which is usually pronounced “deck” • to avoid confusion with the dequeue method of the regular queue ADT, which is pronounced like the abbreviation “D.Q.” • An implementation of a deque class is available in Python’s standard collections module.

  15. Deque in Python (1/3)

  16. Deque in Python (2/3)

  17. Deque in Python (3/3)

  18. Summary: Stack, Queue, Deque

More Related