queues chapter 6. chapter 6: queues chapter objectives to learn how to represent a waiting line...

31
Queues Chapter 6

Upload: james-richardson

Post on 03-Jan-2016

222 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Queues

Chapter 6

Page 2: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

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

Page 3: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

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

Page 4: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Queue Abstract Data Type (continued)

Page 5: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

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

Page 6: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

A Print Queue (continued)

Page 7: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

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

Page 8: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

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

Page 9: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Specification for a Queue Interface

Page 10: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the 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

Page 11: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Maintaining a Queue of Customers (continued)

Page 12: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Maintaining a Queue of Customers (continued)

Page 13: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

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

Page 14: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Using a Single-Linked List to Implement a Queue (continued)

Page 15: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

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

Page 16: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

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

Page 17: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Implementing a Queue Using a Circular Array (continued)

Page 18: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Implementing a Queue Using a Circular Array (continued)

Page 19: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Implementing a Queue Using a Circular Array (continued)

Page 20: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Implementing a Queue Using a Circular Array (continued)

Page 21: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

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

Page 22: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

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

Page 23: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

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

Page 24: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Simulate a Strategy for Serving Airline Passengers

Page 25: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Simulate a Strategy for Serving Airline Passengers (continued)

Page 26: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Simulate a Strategy for Serving Airline Passengers (continued)

Page 27: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Simulating Waiting Lines Using Queues (continued)

Page 28: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Simulating Waiting Lines Using Queues (continued)

Page 29: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Simulating Waiting Lines Using Queues (continued)

Page 30: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

Chapter 6: Queues

Simulating Waiting Lines Using Queues (continued)

Page 31: Queues Chapter 6. Chapter 6: Queues Chapter Objectives To learn how to represent a waiting line (queue) and how to use the five methods in the Queue interface:

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