CS 3100
Fall 2006
Study Guide

As part of your review process, I recommend you study:
• Notes from class
• Lab assignments
• Look over exercises at the end of the chapter in the book.

Chapter Eleven -- Tables and Priority Queues

• Know what the "basic operations" are that "define the ADT table". Understand what these operations do well enough to write specifications for them.

• Be aware of the advantages and disadvantages of various implementations of the ADT table. In particular if I name a table operation, you should be able to discuss how efficient that operation can be made in various table implementations.

• Know what the "basic operations" are that "define the ADT priority queue". Understand what these operations do well enough to write specifications for them.

• Understand how to implement a priority queue using an ordered list, binary search tree, or heap. Understand the advantages and disadvantages of the various implementations.

• Know how to define a heap. Know how to implement a heap with the array implementation described in the text. Understand how insertion and deletion are performed in this implementation.

• Know how heapsort works -- how it transforms a randomly ordered array into a heap, and how it then uses the heap deletion operation to sort the array. Be able to discuss its efficiency in relation to other sorting algorithms we have studied.

Chapter Twelve -- Advanced Implementations of Tables

• Know the definition of hashing. Know the advantages and disadvantages of hashing relative to other implementations of the ADT table.

• Know what a hash function is. Know what a perfect hash function is. Know the two properties that a good hash function must have. Know several examples of hash functions.

• Understand the need for collision resolution. Know the definitions of open addressing and separate chaining and understand how to implement these forms of collision resolution.

• Understand the following terms: primary and secondary clustering, quadratic hashing, double hashing. Understand why it is desirable to make the size of a hash table a prime or an integer without any small divisors.