Kyle Marcey EECS 337 HW #1 Linked List: To compile, make sure that both linkedlist.c and linkedlist.h are in the same directory, then run the command "gcc -o linkedlist linkedlist.c" After the GCC has finished, type "./linkedlist" to run the program. The linkedlist program will first display the results of the given test cases for cmp_string, then it will go through the two test cases given to test the linked list structure. The linked list implimentation should be able to handle any data type for which you provide a comparison function for. I have provided cmp_string, cmp_double, and cmp_int for use with strings, doubles, and ints respectively. The implimentation should handle exceptions reasonable gracefully, and the user should be alerted if a problem occurs. Hash Table: To compile the hash table, make sure both hashtable.c and hashtable.h are in the same directory, then run "gcc -lm -o hashtable hashtable.c" After GCC finishes, run the program with "./hashtable" When run, the hash table program will run through a series of test cases that should demonstrate all of the major functions. The test case is a hashtable with string keys and integer values. Several key,value pairs are inserted, then a search is run for one key that the table is known to contain, and one search is run for a key that is not present. Some additonal entries are inserted, followed by the attempted removal of keys that are contained within the table, as well as keys that should not be present. A final search for one of the just removed keys is done to show that the removeKey function behaved as expected. The hashtable is then deleted; This hash table implimentation should work with any data type for which a hash function and a comparison function are given. I have provided functions for strings, doubles, and integers, as in the linked list. The implimentation should handle collisions gracefully, by using chaining. Upon reaching a sufficiently high load factor, the table should resize itself. The current implimentation should be able to handle up to just under 1 million elements before running into issues. Once the table reaches this maximum size, it should still function, however the load factor will increase. All of the expected functions are available: createTable, insert, find, remove and deleteTable. Other functions are provided, but are less useful to the end user.