Presentation is loading. Please wait.

Presentation is loading. Please wait.

ENEE150 – 0102 ANDREW GOFFIN Project 4 & Function Pointers.

Similar presentations


Presentation on theme: "ENEE150 – 0102 ANDREW GOFFIN Project 4 & Function Pointers."— Presentation transcript:

1 ENEE150 – 0102 ANDREW GOFFIN Project 4 & Function Pointers

2 Project 4 Hash Table ADT  A data type that points to a hash table  Separate struct needed for hash table nodes themselves  Hash table struct MUST contain:  Pointer to bucket array for table  Function pointer to a print function for the table  Hash table struct should probably contain:  Table stats (total number of records, average search, worst search)  Hash table NODE structs must contain:  Self-referring next pointer (like a linked list)  Generic “data” pointer  String key Goffin – ENEE150

3 Project 4 Continued Hash Table Operations  Phash_table new_hash(int size, void (*print_func)(void *)): constructor  Takes function pointer to set the hash table’s print function  void free_hash(Phash_table table): destructor  void insert_hash(Phash_table table, char *key, void *data)  “constructor” for hash table node: uses hash function to insert into table  void *find_hash(Phash_table table, char *key)  Returns pointer to node with key or NULL if no node with key exists  void stat_hash(Phash_table table, int *total, float *average_search, int *worst_search)  Modifies variables total, average_search, and worse_search by reference  void dump_hash(Phash_table table)  Uses function pointer to print table contents  void resize_hash(Phash_table table, int size)  Changes number of buckets to “size” – you must re-hash all the entries! Goffin – ENEE150

4 Other Project 4 ADT Notes You can use other fields or private methods!  As long as the public methods work as stated, you’re good Hash function  Due to potential bit overflow, use unsigned int variables to store intermediate values Search stats based on number of records traversed to get to the one you’re looking for  Typically, more buckets = more efficient searching Goffin – ENEE150

5 Project 4: Implementations parse.c  Parsing words in a dictionary and inserting them into the hash table  In this case, the word is both the key and part of the data  See handout #14 for an earlier implementation of this performance-test.c  Code is provided: simply shows how increasing buckets improves performance  Also shows benefit of separating use and implementation  Yeung didn’t need your ADT implementation to write this module! Goffin – ENEE150

6 Function Pointers Sometimes different users may want slightly different results from an ADT  Ex: Printing the hash table in project 4  Someone may want to print int data, others char data, etc. Can make functions generic using function pointers  Further supports polymorphism for ADTs Goffin – ENEE150

7 Function Pointer Declaration Must specify return type and parameters void (*func)(int, float)  The above can only be a function pointer for a function with the same interface  Can assign a function to the function pointer by simply saying func = foo; where foo is a function with the same interface as func (*func)(10, 3.14);  The above passes 10 and 3.14 into foo Goffin – ENEE150


Download ppt "ENEE150 – 0102 ANDREW GOFFIN Project 4 & Function Pointers."

Similar presentations


Ads by Google