Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 6 Queue. Learning Objectives ● Describe the behavior of a queue. ● Enumerate the primary operations supported by a queue. ● Learn about the UNIX.

Similar presentations


Presentation on theme: "Chapter 6 Queue. Learning Objectives ● Describe the behavior of a queue. ● Enumerate the primary operations supported by a queue. ● Learn about the UNIX."— Presentation transcript:

1 Chapter 6 Queue

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 ● 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

15

16 ● 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

20 ● Job class hierarchy  A basic Job class that stands for the type of all objects in the queue.  OwnerJob class compares owner names.  OwnerIdJob class compares owner names and job ids.

21 6.4 A PrintQueue Class Using Queue

22

23 ● 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,

24 6.4 A PrintQueue Class Using Queue

25

26

27

28 6.5 Queue Class Implementation ● Array list  Front and rear are maintained to point to the respective ends of the queue.

29 6.5 Queue Class Implementation

30

31 ● 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

32 6.5 Queue Class Implementation

33 ● 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.

34 6.5 Queue Class Implementation

35 6.5.2 Design 2: Using Linked List

36

37

38 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.

39 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.

40 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.

41 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.

42 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.


Download ppt "Chapter 6 Queue. Learning Objectives ● Describe the behavior of a queue. ● Enumerate the primary operations supported by a queue. ● Learn about the UNIX."

Similar presentations


Ads by Google