1 / 41

Chapter 6

Queue. Chapter 6. Learning Objectives. Describe the behavior of a queue. Enumerate the primary operations supported by a queue. Learn about the UNIX print queue, the main commands that con be issued to it, and how these commands may be mapped to the operations of the queue data structure.

smangano
Download Presentation

Chapter 6

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. Queue Chapter 6

  2. Learning Objectives • Describe the behavior of a queue. • Enumerate the primary operations supported by a queue. • Learn about the UNIX print queue, the main commands that con be issued to it, and how these commands may be mapped to the operations of the queue data structure. • Understand the public interface of a queue class in Java and the running times of its methods.

  3. Learning Objectives • Implement a print queue class in Java using the queue class. • Study the implementation of the queue class, and the trade-offs involved in choosing between candidate storage components.

  4. 6.1 Queue Properties • Queues • Lines in which people “queue” up to be served, in a first come, first served manner. • The typical computing environment queues are used to process requests for service on shared resources. • Printer uses a first-come first-served policy. • First served policy is also known as first in, first out, or FIFO for short.

  5. 6.1 Queue Properties

  6. 6.1 Queue Properties • The FIFO policy is applicable only for entries that reach the front of the queue and are then removed. • Entries may leave the queue without reaching the front.

  7. 6.1 Queue Properties

  8. Floating-Front Design Approach

  9. The Enqueue Operation

  10. The Dequeue Operation

  11. 6.2 UNIX Print Queue • The UNIX lpr command enqueues a print job. • lpq checks the status of the printer queue. • First entry is currently being printed (active).

  12. 6.2 UNIX Print Queue • Deletes the job that is currently active (being printed). • Removes all the jobs.

  13. 6.3 A Queue Class

  14. 6.3 A Queue Class

  15. 6.3 A Queue Class

  16. 6.3 A Queue Class • A queue can be considered a specialized (restricted) unordered list. • All methods supported by Queue have their functional counterpart in the List class. • Exception:dequeue and postionOf. • Enqueue is identical in functionality to add. • All other methods have identical names between both classes.

  17. 6.3 A Queue Class • An efficient implementation would maintain a direct reference to the rear and another to the front. • Enqueue and dequeue can be implemented in O(1) time. • Maintains a running count of the number of entries in the queue. • The methods size and isEmpty can be implmented in O(1).

  18. 6.4 A PrintQueue Class Using Queue

  19. 6.4 A PrintQueue Class Using Queue

  20. 6.4 A PrintQueue Class Using Queue

  21. 6.4 A PrintQueue Class Using Queue

  22. 6.4 A PrintQueue Class Using Queue • toString and equals are both declared public. • These methods override their Object class counterparts. (dynamic binding  the object type will determine which method to exec.) • Ex: • Class A: Base • Class B : subclass of A • A and B have p method • A a = new A(); • B b = new B(); • a = b; • a.p(); method p of class B will be exec,

  23. 6.4 A PrintQueue Class Using Queue

  24. 6.4 A PrintQueue Class Using Queue

  25. 6.4 A PrintQueue Class Using Queue

  26. 6.4 A PrintQueue Class Using Queue

  27. 6.5 Queue Class Implementation • Array list • Front and rear are maintained to point to the respective ends of the queue.

  28. 6.5 Queue Class Implementation

  29. 6.5 Queue Class Implementation

  30. 6.5 Queue Class Implementation • Every enqueue and dequeue pair results in array location being wasted. • Circular Array • When the queue wraps back, the rear index becomes less than the front index. • If the rear index is less than the front index, then the gap between the rear and front is the unused space. • Compute the used space by subtracting this unused space from the length of the array. • front - rear -1

  31. 6.5 Queue Class Implementation

  32. 6.5 Queue Class Implementation • In an empty queue, the rear index is one less than the front index. • If the queue is filled and the rear index keeps advancing until it ends up coming to one position behind the front index, it looks the same as the empty queue. • Keeping a count of the number of entries in the queue, starting with 0 when the queue is created resolves this ambiguity.

  33. 6.5 Queue Class Implementation

  34. 6.5.2 Design 2: Using Linked List

  35. 6.5.2 Design 2: Using Linked List

  36. 6.5.2 Design 2: Using Linked List

  37. 6.6 Summary • The queue data structure implements the First In First Out (FIFO) abstraction. • A queue is a linear collection of entires in which, for every pair of entries x and y, if x leaves from the front of the queue before y, then x must have entered the queue before y. • An entry may leave a queue before reaching the front. • In this case, that entry is not served.

  38. 6.6 Summary • There are two fundamental operations supported by a queue: enqueue and dequeue. • A queue class may provide more than just the fundamental enqueue and dequeue operations to facilitate ease of use. • A queue may be viewed as a specialized or restricted unordered list. • A print queue in UNIX can be implemented using the queue data structure.

  39. 6.6 Summary • Implementing a UNIX print queue using the Queue class requires the Queue clients to build a class hierarchy that will enable the matching of a queue entry against a specific item based on either job id, job owner, or both. • If class B extends class A, then any method in B that overrides an inherited method from A cannot be less accessible than the inherited method.

  40. 6.6 Summary • An array list may be used to implement the queue, but this would result in a implementation that is either inefficient in time or wasteful of space usage. • A circular array may be used to implement a queue, with the attendant problem of overestimating or underestimating the space requirement associated with the static allocation of an array.

  41. 6.6 Summary • A linked list is better than either an array list or a circular array to implement the queue. • When class A reuses an instance of class B as a component, exceptions thrown by methods of B may have to be caught by A in order to reinterpret them for clients of A.

More Related