Vous êtes sur la page 1sur 31

Queues

Chapter 6
Chapter Objectives

• To learn how to represent a waiting line (queue) and how


to use the five methods in the Queue interface: insert,
retrieve, peek, getSize, and isEmpty
• To understand how to implement the Queue interface
using a single-linked list, a circular array, and a double-
linked list
• To understand how to simulate the operation of a
physical system that has one or more waiting lines using
Queues and random number generators

Chapter 6: Queues
Queue Abstract Data Type

• 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 are placed at the end of the line

Chapter 6: Queues
Queue Abstract Data Type (continued)

Chapter 6: Queues
A Print Queue

• Operating systems use queues to


• Track of tasks waiting for a scarce resource
• To ensure that the tasks are carried out in the order
that they were generated
• Print queue: printing is much slower than the process of
selecting pages to print and so a queue is used

Chapter 6: Queues
A Print Queue (continued)

Chapter 6: Queues
The Unsuitability of a Print Stack

• 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

Chapter 6: Queues
Using a Queue for Traversing a Multi-
Branch Data Structure
• A graph models a network of nodes, with many links
connecting each node to other nodes in the network
• A node in a graph may have several successors
• Programmers often use a queue to ensure that nodes
closer to the starting point are visited before nodes that
are farther away

Chapter 6: Queues
Specification for a Queue Interface

Chapter 6: Queues
Maintaining a Queue of Customers

• Queue is good for storing a list of customers as they


should be serviced in the order in which they arrived
• Algorithm for processCustomers
• While the user is not finished
• Display the menu and get the operation selected
• Perform the operation selected

Chapter 6: Queues
Maintaining a Queue of Customers
(continued)

Chapter 6: Queues
Maintaining a Queue of Customers
(continued)

Chapter 6: Queues
Using a Single-Linked List to Implement a
Queue
• Can implement a queue using a single-linked list
• 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
methods insert and remove

Chapter 6: Queues
Using a Single-Linked List to Implement a
Queue (continued)

Chapter 6: Queues
Implementing a Queue Using Java’s
LinkedList
• Can be implemented as an adapter of any class that
implements the List interface
• ArrayList
• Vector
• LinkedList
• Removal is O(n) with a linked list
• O(n) when using ArrayList or Vector

Chapter 6: Queues
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
• Array Implementation
• Insertion at rear of array is constant time
• Removal from the front is linear time
• Removal from rear of array is constant time
• Insertion at the front is linear time

Chapter 6: Queues
Implementing a Queue Using a Circular
Array (continued)

Chapter 6: Queues
Implementing a Queue Using a Circular
Array (continued)

Chapter 6: Queues
Implementing a Queue Using a Circular
Array (continued)

Chapter 6: Queues
Implementing a Queue Using a Circular
Array (continued)

Chapter 6: Queues
Comparing the Three Implementations

• All three implementations are comparable in terms of


computation time
• Linked-list implementations require more storage
because of the extra space required for the links
• Each node for a single-linked list would store a total of
two references
• Each node for a double-linked list would store a total
of three references
• 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
Chapter 6: Queues
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
• 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

Chapter 6: Queues
Simulating Waiting Lines Using Queues
(continued)
• System designers often use computer models to
simulate physical systems
• Airline check-in counter for example
• A special branch of mathematics called queuing
theory has been developed to study such problems

Chapter 6: Queues
Simulate a Strategy for Serving Airline
Passengers

Chapter 6: Queues
Simulate a Strategy for Serving Airline
Passengers (continued)

Chapter 6: Queues
Simulate a Strategy for Serving Airline
Passengers (continued)

Chapter 6: Queues
Simulating Waiting Lines Using Queues
(continued)

Chapter 6: Queues
Simulating Waiting Lines Using Queues
(continued)

Chapter 6: Queues
Simulating Waiting Lines Using Queues
(continued)

Chapter 6: Queues
Simulating Waiting Lines Using Queues
(continued)

Chapter 6: Queues
Chapter Review

• Queue is an abstract data type with a first-in, first-out


structure (FIFO)
• The Queue interface declares methods insert, remove,
peek, size, and isEmpty
• Three ways to implement the Queue interface: single-
linked list, circular array, and as an adapter of the
LinkedList class
• 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

Chapter 6: Queues

Vous aimerez peut-être aussi