Summary: In this laboratory, you will have an opportunity to ground your understanding of priority queues, particularly of the array-based implementation of queues. Along the way, you may think more about object-oriented design, such as the design of adapter classes.Required Code Files:
a. Add up the number of vowels in the first names of all of your group members. Make a note as to whether that number is even or odd.
b. Review the reading on linear structures.
c. Review the reading on priority queues.
a. Read through our interface for priority queues,
b. Read through the documentation on the standard Java implementation of priority queues, available at http://docs.oracle.com/javase/8/docs/api/java/util/PriorityQueue.html.
c. Discuss with your partner how you would write an adapter class to make the built in priority queues match the desired behavior of our priority queue interface.
d. Look at
BuiltinPriorityQueue.java to see how our
implementation matches your design.
PriorityQueueExpt. Summarize what the queue
should look like at each step of the first series of procedure calls.
You may also want to revisit the
PriorityBasedQueueExpt and see if you get the output that
PriorityQueueExpt so that the queue gives highest
priority to the longest strings. That is,
return the longest remaining string.
PriorityQueueExpt so that the queue gives
highest priority to the alphabetically first string.
a. Read through
ArrayBasedPriorityQueue.java. You will note
that the iterator is not yet implemented and that prioritization is not
b. Make some notes to yourself as to how you might finish implementing
As the reading noted, there are two basic strategies for implementing priority queues in arrays.
putmethod must ensure that the elements in the array are stored in order. (You can probably use a variant of the
insertmethod from insertion sort to achieve that goal.)
peek. (You can probably use a variant of the
indexOfSmallestmethod from selection sort to achieve that goal.)
If you came up with an odd number in the preparation, use the first of the two approaches. If you came up with an even number, use the second of the two approaches.
If you are fortunate enough to have extra time, do some of the following:
get. The easy approach is to simply pick a random position each time. However, that approach does not guarantee that
peekreturns the same value as the subsequent
get. Start with the easy approach, and then see if you can get
getto work in synchrony.