34
Fall 2007 CS 225 1 Queues Chapter 6

Fall 2007CS 2251 Queues Chapter 6. Fall 2007CS 2252 Chapter Objectives To learn how to represent a waiting line (queue) and how to use the methods in

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Fall 2007 CS 225 1

Queues

Chapter 6

Fall 2007 CS 225 2

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

how to use the methods in the Queue interface for insertion (offer and add), removal (remove and poll), and for accessing the element at the front (peek and element)

• 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

Fall 2007 CS 225 3

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– First-in first-out

• New elements are placed at the end of the line

Fall 2007 CS 225 4

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

Fall 2007 CS 225 5

A Print Queue

Fall 2007 CS 225 6

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

Fall 2007 CS 225 7

Queue InterfaceMethod Behavior

boolean offer( E item) Insert item at the end of the queue.

E remove() Remove the entry at front of the queue. Throws NoSuchElementException.

E poll() Removes the entry at front. Returns null if there is none.

E peek() Returns entry at front or null if there is none.

E element() Returns entry at front. Throws NoSuchElementException.

Fall 2007 CS 225 8

LinkedList as a Queue• Any doubly linked list class provides the basic

functionality of a queue• The Java 5.0 LinkedList class implements the Queue

interface– http://java.sun.com/j2se/1.5.0/docs/api/java/util/Queue.html

• Desired behavior (not actual behavior)– Queue<String> names = new LinkedList<String>(); creates a new Queue reference, names, that stores references to String objects

– The 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.

Fall 2007 CS 225 9

Maintaining a Customer Queue

• Queue is good for storing a list of customers as they should be serviced in the order in which they arrived

Data/ Method Purpose

private Queue<String> customers

A queue of customers

public void processCustomers()

Accepts and executs menu choices for processing customers.

Fall 2007 CS 225 10

Doubly-Linked List as Queues

• 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

• Java designers decided to make the head of the linked list the front of the queue and the tail the rear of the queue

• Limitation: LinkedList object is used as a queue, it may be possible to apply other LinkedList methods in addition to the ones required by the Queue interface

Fall 2007 CS 225 11

Singly-Linked List as 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 methods insert and remove

Fall 2007 CS 225 12

Single-Linked List to Implement a Queue

• 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

Fall 2007 CS 225 13

Using a Circular Array for a Queue

• Simple 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

• Using a circular array makes every operation constant time

Fall 2007 CS 225 14

Implementing a Queue Using a Circular Array

Fall 2007 CS 225 15

Implementing a Queue Using a Circular Array

Fall 2007 CS 225 16

Implementing a Queue Using a Circular Array

Fall 2007 CS 225 17

Implementing a Queue Using a Circular Array

Fall 2007 CS 225 18

Implementing Class ArrayQueue<E>.Iter

• Just as for class ListQueue<E>, we must implement the missing Queue methods and an inner class Iter to fully implement the Queue interface

• Data field index stores the subscript of the next element to access

• The constructor initializes index to front when a new Iter object is created

• Data field count keeps track of the number of items accessed so far

• Method Iter.remove throws an Unsupported-OperationException because it would violate the contract for a queue to remove an item other than the first one

Fall 2007 CS 225 19

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

Fall 2007 CS 225 20

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

Fall 2007 CS 225 21

Simulating Waiting Lines Using Queues

• 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

Fall 2007 CS 225 22

Simulate a Strategy for Serving Airline Passengers

Fall 2007 CS 225 23

Simulate Strategies for Serving Airline Passengers

• Use the nouns in the problem description to come up with apreliminary set of potential classes.

Fall 2007 CS 225 24

UML Sequence Diagrams

• Sequence diagrams model a program by showing interactions between objects

• Actors and objects are displayed horizontally– Each object has a lifeline

• Time increases down the diagram• Messages are represented by labeled

arrows between objects

Fall 2007 CS 225 25

Sequence Diagrams• Can model a program

by showing interactions between objects

• Actors and objects are displayed horizontally– Each object has a

lifeline• Time increases down

the diagram• Labeled arrows

represent messages between objects

Fall 2007 CS 225 26

Sequence Diagram for Simulation

Fall 2007 CS 225 27

Final UML Diagram

Fall 2007 CS 225 28

AirlineCheckinSim Data

Fall 2007 CS 225 29

AirlineCheckinSim Methods

Fall 2007 CS 225 30

PassengerQueue Data

Fall 2007 CS 225 31

PassengerQueue Methods

Fall 2007 CS 225 32

Passenger Methods

Fall 2007 CS 225 33

Simulation Input ParametersVariable Attribute Conversion

frequentFlyerQueue arrivalRate

# arrivals per hour Divide by 60

regularPassengerQueue arrivalRate

# arrivals per hour Divide by 60

frequentFlyerMax # frequent flyers between regular

maxProcessingTime max service time ( min)

totalTime Total simulation time (min)

showAll Flag to control simulation trace

Y -> true

Fall 2007 CS 225 34

Chapter Review• 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.• Three ways to implement the Queue interface:

double-linked list, single-linked list, and circular array• 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