>> Data Structure & Algorithms
In this programming assignment you will implement an open hash table and compare the performance of four hash functions using various prime table sizes.
You will use the table to compare two Shakespeare plays: Hamlet and As You Like It. You will report the number of words that Shakespeare used in both plays. Have your program read the file hamlet.txt and insert each word into the table. For this assignment, a word will be delimited by a white space, so simple input with >> can be used. Some of the words will, of course, be nonsense, but we will ignore this. After inserting all the words from Hamlet, do a lookup for words from the file asyoulikeit.txt. Store and count the words that are duplicated in the two plays (i.e. words for which the search is successful). Your count may be slightly less than accurate in reality, since we will not strictly parse the words. However, each student should come up with the same list of words and the same count. For each word you insert, compute the number of elements in the bucket that are searched. Likewise, compute the number of unsuccessful searches. Report the average number of elements inspected during a search (average number per bucket). Determine if this is close to the expected size based on the load factor after all words have been inserted.
Repeat your experiment with table sizes of 27691, 55381 and 83,077 using each of the four hash functions.
- The hash table must be a template class which uses a linked list to store collisions
- The underlying physical structure can be a simple, dynamically allocated array or a vector.
- The hash table will use an abstract hashing class and four subclasses