Chapter 4
Queues
Objectives
Upon completion you will be able to:
• Explain the design, use, and operation of a queue
• Implement a queue using a linked list structure
• Understand the operation of the queue ADT
• Write application programs using the queue ADT
• Explain categorizing data and queue simulation
Data Structures: A Pseudocode Approach with C 1
What is a queue ?
A queue is a linear list in which data can
be inserted at one end, called the rear,
and deleted from the other end, called the
front.
It is a first in – first out (FIFO) restricted
data structure.
Data Structures: A Pseudocode Approach with C 2
Data Structures: A Pseudocode Approach with C 3
4-1 Queue Operations
This section discusses the four basic queue operations. Using
diagrammatic figures, it shows how each of them work. It
concludes with a comprehensive example that demonstrates each
operation.
• Enqueue
• Dequeue
• Queue Front
• Queue Rear
• Queue Example
Data Structures: A Pseudocode Approach with C 4
Queue operations
Enqueue
Dequeue
Queue front
Queue rear
Data Structures: A Pseudocode Approach with C 5
Enqueue
Enqueue inserts an element at the rear of the
queue.
Data Structures: A Pseudocode Approach with C 6
Dequeue
Dequeue deletes an element at the front of the
queue.
Data Structures: A Pseudocode Approach with C 7
Queue front
Queue front retrieves the element at the front of
the queue.
Data Structures: A Pseudocode Approach with C 8
Queue rear
Queue rear retrieves the element at the rear of
the queue.
Data Structures: A Pseudocode Approach with C 9
Data Structures: A Pseudocode Approach with C 10
(Continued)
Data Structures: A Pseudocode Approach with C 11
4-2 Queue Linked List Design
We first discuss the data structure for a linked-list implementation.
We then develop the eight algorithms required to implement a queue.
• Data Structure Queue
• Algorithms
Data Structures: A Pseudocode Approach with C 12
Data structure
Data Structures: A Pseudocode Approach with C 13
pointer
Data Structures: A Pseudocode Approach with C 14
Queue algorithms
Create queue Empty queue
Enqueue Full queue
Dequeue Queue count
Queuefront Destroy queue
Queuerear
Data Structures: A Pseudocode Approach with C 15
Data Structures: A Pseudocode Approach with C 16
(Continued)
Data Structures: A Pseudocode Approach with C 17
Create queue
Data Structures: A Pseudocode Approach with C 18
enqueue
Data Structures: A Pseudocode Approach with C 19
Data Structures: A Pseudocode Approach with C 20
dequeue
Data Structures: A Pseudocode Approach with C 21
Data Structures: A Pseudocode Approach with C 22
Data Structures: A Pseudocode Approach with C 23
Data Structures: A Pseudocode Approach with C 24
Data Structures: A Pseudocode Approach with C 25
Data Structures: A Pseudocode Approach with C 26
Data Structures: A Pseudocode Approach with C 27
4-3 Queue ADT
This section develops the data structures and C code to
implement a Queue ADT. The first program contains
the data structure declarations and a list of the prototypes
for all of the functions. We then develop the C code for
the algorithms discussed in Section 4.2
• Queue Structure
• Queue ADT Algorithms
Data Structures: A Pseudocode Approach with C 28
Data Structures: A Pseudocode Approach with C 29
Data Structures: A Pseudocode Approach with C 30
傳進來的是儲存資料變數的位
址,用區域指標變數來接。
Data Structures: A Pseudocode Approach with C 31
dequeue (queue, (void*)&dataPtr)
傳進來的是儲存指到資料變數的指標
變數的位址,用區域指標變數 ( 一個指
到指標變數的指標變數 ) 來接。
Data Structures: A Pseudocode Approach with C 32
queueFront (queue, (void*)&dataPtr)
Data Structures: A Pseudocode Approach with C 33
queueRear (queue, (void*)&dataPtr)
Data Structures: A Pseudocode Approach with C 34
Data Structures: A Pseudocode Approach with C 35
Data Structures: A Pseudocode Approach with C 36
Data Structures: A Pseudocode Approach with C 37
4-4 Queuing Theory
Queuing theory is a field of applied mathematics that is
used to predict the performance of queues. In this
section we review a few basic queuing theory concepts.
Data Structures: A Pseudocode Approach with C 38
Queuing theory
Queuing theory is a field of applied
mathematics that is used to predict the
performance of queues.
Data Structures: A Pseudocode Approach with C 39
Queue types
Single server queue
Provide service to only one customer at a
time.
Multiserver queue
Provide service to many customers at a time.
Multiqueues, multiple single-server queues
Data Structures: A Pseudocode Approach with C 40
Common queue elements
One or more customers
A customer is any person or thing needing
service.
Service
The service is any activity needed to
accomplish the required result.
Data Structures: A Pseudocode Approach with C 41
Affected factors
Arrival rate
The rate at which customers arrive in the
queue for service.
Service time
The average time required to complete the
processing of a customer request.
Data Structures: A Pseudocode Approach with C 42
Response time
The average time from the point at which
customers enter the queue until the moment
they leave the server.
queue time + average service time
Queue time
The average length of time customers wait in queue
Average service time
The average time required to complete the processing of a
customer request.
Data Structures: A Pseudocode Approach with C 43
Data Structures: A Pseudocode Approach with C 44
4-5 Queue Applications
We develop two queue applications. The first shows how to use a
queue to categorize data. The second is a queue simulator,
which is an excellent tool to simulate the performance and to
increase our understanding of its operation.
• Categorizing Data
• Queue Simulation
Data Structures: A Pseudocode Approach with C 45
Categorizing data
It is often necessary to rearrange data
without destroying their basic sequence.
Example :
3 22 12 6 10 34 65 29 9 30 81 4 5 19 20 57 44 99
We want the list rearranged as shown below.
Less than 10 : 36945
Between 10 and 19 : 12 10 19
Between 20 and 29 : 22 29 20
30 and greater : 34 65 30 81 57 44 99
Data Structures: A Pseudocode Approach with C 46
Categorizing data design
Category queues
Fill category queues
Data Structures: A Pseudocode Approach with C 47
Data Structures: A Pseudocode Approach with C 48
Data Structures: A Pseudocode Approach with C 49
Data Structures: A Pseudocode Approach with C 50
(Continued)
Data Structures: A Pseudocode Approach with C 51
Data Structures: A Pseudocode Approach with C 52
Data Structures: A Pseudocode Approach with C 53
Data Structures: A Pseudocode Approach with C 54
(Continued)
Data Structures: A Pseudocode Approach with C 55
(Continued)
Data Structures: A Pseudocode Approach with C 56
Data Structures: A Pseudocode Approach with C 57
Data Structures: A Pseudocode Approach with C 58
Data Structures: A Pseudocode Approach with C 59
Queue simulation
We build a model of a single-server queue.
clerk
New customer
window
queue
the store is open 8 hours per day, 7 days a
week.
To simulate a day, we build a model that runs for
480 minutes(8×60).
Data Structures: A Pseudocode Approach with C 60
Queue simulation
The simulation use a digital clock that
events start and stop in 1-minute
intervals.
In each minute of operation, three events
will be checked:
The arrival of customers
The start of customer processing
The completion of customer processing
Data Structures: A Pseudocode Approach with C 61
Events
newCustomer
svcFree (svcStart)
svcComplete
Data Structures: A Pseudocode Approach with C 62
Data structures
Queue head
Queue node
Customer status
Simulation statistics
Data Structures: A Pseudocode Approach with C 63
Data Structures: A Pseudocode Approach with C 64
Flag moreCusts
Data Structures: A Pseudocode Approach with C 65
Queue node
custNum
arriveTime
Data Structures: A Pseudocode Approach with C 66
custStatus
custNum
arriveTime
startTime
svcTime
Data Structures: A Pseudocode Approach with C 67
simStatus
numCust
totSvcTime
totWaitTime
maxQueueSize
Data Structures: A Pseudocode Approach with C 68
Data Structures: A Pseudocode Approach with C 69
An example
Four customers arrive at time 1, 2, 3 and
5.
Data Structures: A Pseudocode Approach with C 70
An example
clocks
1 2 3 4 5 6 7 8
events
newCustomer 1 2 3 4
svcFree YES YES YES YES
(svcStart) 1 2 3 4
YES YES YES YES
svcComplete
1 2 3 4
Data Structures: A Pseudocode Approach with C 71
Data Structures: A Pseudocode Approach with C 72