View
219
Download
1
Category
Tags:
Preview:
Citation preview
Objectives Learn how to represent a queue Learn how to use the methods in the
Queue interface Understand how to implement the Queue
interfaceDouble-linked listSingle-linked listCircular array
Queue
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Queue Abstract Data Type A First-In, First-Out (FIFO) data structure Can visualize a queue as a line of
customers waiting for service The next person to be served is the one
who has waited the longest New elements (people) are placed at the
end of the line
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
A Print Queue Operating systems use queues to:
Keep track of tasks waiting for a scarce resource Ensure that the tasks are carried out in the order that
they were generated
Print queue Printing is slower than the process of selecting pages
or documents to print Queue is used to store documents for printing Documents are printed in the order they were added
to the queue (unless a priority scheme is used)
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
A Print Queue (continued)
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Answer: Stacks are last-in, first-out (LIFO) The most recently selected document
would be the next to print Unless the printer queue is empty, your
print job may never get executed if others are issuing print jobs
Specification of a Queue Interface
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Queue Methods add and offer
For a queue of unlimited size, methods are logically equivalent
For a bounded queue, add will throw an exception if the limit has been reached, but offer will return false
peek and element peek will return null if the queue is empty, but element
will throw an exception poll and remove
poll will return null if the queue is empty, but remove will throw an exception
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
LinkedList Class and Queue Interface LinkedList class provides methods for
inserting and removing elements at either end of a double-linked list
The Java 5.0 LinkedList class implements the Queue interface
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Queue Example Queue<String> names = new LinkedList<String>(); Creates a new Queue reference, names, that
stores references to String objectsThe actual object referenced by names is type
LinkedList<String> Because names is a type Queue<String>
reference, you can apply only the Queue methods to it
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Using a LinkedList to Implement the Queue Interface Insertion and removal from either end of a
double-linked list is O(1) so either end can be the front (or rear) of the queue
In the Java 5.0 implementation, designers decided to make the head of the linked list the front of the queue and the tail the rear of the queue
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Using a LinkedList to Implement the Queue Interface (continued) Because LinkedList implements Queue, it
is possible to apply other LinkedList methods to a Queue (in addition to the ones required by the Queue interface)
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Answer: Adapter Pattern
A better approach would be to create a new class that wrappers a LinkedList and implements the Queue interfaceOnly Queue methods would be availableQueue methods would be implemented by
calling methods on the LinkedListEncapsulation would hide linked list
implementation from clients
Using a Single-Linked List to Implement a Queue Can implement a queue using a single-
linked list Class ListQueue contains a collection of
Node<E> objects Insertions are at the rear of a queue and
removals are from the front Need a reference to the last list node Number of elements in the queue is
changed by offer, poll, and removeKoffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using
Java Version 5.0. New York: John Wiley & Sons.
Using a Single-Linked List to Implement a Queue (continued)
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Implementing a Queue Using a Circular Array Time efficiency of using a single- or
double-linked list to implement a queue is acceptable However there are some space inefficiencies
Storage space is increased when using a linked list due to references stored at each list node
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Implementing a Queue Using a Circular Array (continued) Array Implementation
Insertion at rear of array is constant timeRemoval from the front is linear timeRemoval from rear of array is constant time Insertion at the front is linear time
Circular Array ImplementationBoth insertions and removals are constant
time
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Implementing a Queue Using a Circular Array (continued)
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Implementing a Queue Using a Circular Array (continued)
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Implementing a Queue Using a Circular Array (continued)
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Implementing a Queue Using a Circular Array (continued)
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Comparing the Implementations All three implementations are comparable in
terms of computation timeAll operations are O(1)
Linked-list implementations require more storage because of the extra space required for the linksEach node for a single-linked list would store a
total of two referencesEach node for a double-linked list would store a
total of three references
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Comparing the Implementations (continued) A circular array that is filled to capacity
would require half the storage of a single-linked list to store the same number of elements
A circular array that was just reallocated would be half empty and require the same amount of storage as a single-linked list
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Simulating Waiting Lines Using Queues Simulation is used to study the
performance of a physical system by using a physical, mathematical, or computer model of the system
Simulation allows designers of a new system to estimate the expected performance before building it
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Simulating Waiting Lines Using Queues (continued) Simulation can lead to changes in the
design that will improve the expected performance of the new system
Useful when the real system would be too expensive to build or too dangerous to experiment with after its construction
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Simulating Waiting Lines Using Queues (continued) System designers often use computer
models to simulate physical systemsAirline check-in counter for example
A special branch of mathematics called queuing theory has been developed to study such problems
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Summary Queue is an abstract data type with a first-in, first-
out structure (FIFO) The Queue interface declares methods offer,
remove, poll, peek, and element Multiple ways to implement the Queue interface
Double-linked list, single-linked list, and circular array Queues are often used in simulation
To avoid the cost of building a physical system or running an actual experiment, computer simulation can be used to evaluate the expected performance of a system or operation strategy
Koffman, E.B. & Wolfgang, P.A.T. (2003). Objects, Abstraction, Data Structures, and Design Using Java Version 5.0. New York: John Wiley & Sons.
Recommended