© 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.
-
Upload
dwight-pearson -
Category
Documents
-
view
217 -
download
2
Transcript of © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.
![Page 1: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/1.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-1
Chapter 8
Queues
![Page 2: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/2.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-2
The Abstract Data Type Queue
• A queue– New items enter at the back, or rear, of the queue
– Items leave from the front of the queue
– First-in, first-out (FIFO) property
• The first item inserted into a queue is the first item to leave
![Page 3: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/3.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-3
The Abstract Data Type Queue
• ADT queue operations– Create an empty queue
– Determine whether a queue is empty
– Add a new item to the queue
– Remove from the queue the item that was added earliest
– Remove all the items from the queue
– Retrieve from the queue the item that was added earliest
![Page 4: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/4.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-4
The Abstract Data Type Queue
• Queues– Are appropriate for many real-world situations
• Example: A line to buy a movie ticket
– Have applications in computer science
• Example: A request to print a document
• A simulation– A study to see how to reduce the wait involved in an
application
![Page 5: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/5.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-5
The Abstract Data Type Queue
• Pseudocode for the ADT queue operationscreateQueue()// Creates an empty queue.
isEmpty()// Determines whether a queue is empty
enqueue(newItem) throws QueueException// Adds newItem at the back of a queue. Throws// QueueException if the operation is not// successful
![Page 6: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/6.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-6
The Abstract Data Type Queue
• Pseudocode for the ADT queue operations (Continued)dequeue() throws QueueException// Retrieves and removes the front of a queue. // Throws QueueException if the operation is// not successful.
dequeueAll()// Removes all items from a queue
peek() throws QueueException// Retrieves the front of a queue. Throws// QueueException if the retrieval is not// successful
![Page 7: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/7.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-7
The Abstract Data Type Queue
Figure 8-2Figure 8-2
Some queue operations
![Page 8: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/8.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-8
Simple Applications of the ADT Queue: Reading a String of Characters• A queue can retain characters in the order in
which they are typedqueue.createQueue()
while (not end of line) {
Read a new character ch
queue.enqueue(ch)
}
• Once the characters are in a queue, the system can process them as necessary
![Page 9: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/9.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-9
Recognizing Palindromes
• A palindrome– A string of characters that reads the same from left to
right as its does from right to left
• To recognize a palindrome, a queue can be used in conjunction with a stack– A stack can be used to reverse the order of occurrences
– A queue can be used to preserve the order of occurrences
![Page 10: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/10.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-10
Recognizing Palindromes
• A nonrecursive recognition algorithm for palindromes– As you traverse the
character string from left to right, insert each character into both a queue and a stack
– Compare the characters at the front of the queue and the top of the stack
Figure 8-3Figure 8-3
The results of inserting a string
into both a queue and a stack
![Page 11: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/11.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-11
Implementations of the ADT Queue
• A queue can have either– An array-based implementation
– A reference-based implementation
![Page 12: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/12.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-12
A Reference-Based Implementation
• Possible implementations of a queue – A linear linked list with two external references
• A reference to the front
• A reference to the back
Figure 8-4aFigure 8-4aA reference-based implementation of a queue: a) a linear linked list with two
external references
![Page 13: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/13.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-13
A Reference-Based Implementation
• Possible implementations of a queue (Continued)– A circular linked list with one external reference
• A reference to the back
Figure 8-4bFigure 8-4bA reference-based implementation of a queue: b) a circular linear linked list with one
external reference
![Page 14: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/14.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-14
A Reference-Based Implementation
Figure 8-5Figure 8-5
Inserting an item into a nonempty queue
![Page 15: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/15.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-15
A Reference-Based Implementation
Figure 8-6Figure 8-6
Inserting an item into an empty queue: a) before insertion; b) after insertion
![Page 16: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/16.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-16
A Reference-Based Implementation
Figure 8-7Figure 8-7
Deleting an item from a queue of more than one item
![Page 17: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/17.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-17
An Array-Based Implementation
Figure 8-8Figure 8-8a) A naive array-based implementation of a queue; b) rightward drift can cause the
queue to appear full
![Page 18: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/18.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-18
An Array-Based Implementation
• A circular array eliminates the problem of rightward drift
Figure 8-9Figure 8-9
A circular implementation of a queue
![Page 19: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/19.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-19
An Array-Based Implementation
Figure 8-10Figure 8-10
The effect of some operations of the queue in Figure 8-8
![Page 20: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/20.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-20
An Array-Based Implementation
• A problem with the circular array implementation– front and back cannot be used to distinguish
between queue-full and queue-empty conditions
![Page 21: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/21.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-21
An Array-Based Implementation
Figure 8-11aFigure 8-11a
a) front passes back when the queue becomes empty
![Page 22: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/22.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-22
An Array-Based Implementation
Figure 8-11bFigure 8-11b
b) back catches up to front when the queue becomes full
![Page 23: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/23.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-23
An Array-Based Implementation
• To detect queue-full and queue-empty conditions– Keep a count of the queue items
• To initialize the queue, set– front to 0– back to MAX_QUEUE – 1– count to 0
![Page 24: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/24.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-24
An Array-Based Implementation
• Inserting into a queueback = (back+1) % MAX_QUEUE;
items[back] = newItem;
++count;
• Deleting from a queuefront = (front+1) % MAX_QUEUE;
--count;
![Page 25: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/25.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-25
An Array-Based Implementation
• Variations of the array-based implementation– Use a flag full to distinguish between the full and
empty conditions
– Declare MAX_QUEUE + 1 locations for the array items, but use only MAX_QUEUE of them for queue items
![Page 26: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/26.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-26
An Array-Based Implementation
Figure 8-12Figure 8-12
A more efficient circular
implementation: a) a full
queue; b) an empty queue
![Page 27: © 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.](https://reader035.fdocuments.in/reader035/viewer/2022062719/56649ef45503460f94c0728a/html5/thumbnails/27.jpg)
© 2006 Pearson Addison-Wesley. All rights reserved 8 A-27
Please open file carrano_ppt08_B.ppt
to continue viewing chapter 8.