free(old_buckets); To make the dictionary work with any data type, replace int value with void *value and store the size or use a union. 6.3 Thread Safety For multithreaded programs, add mutex locks per bucket (fine-grained locking) or a single global lock (coarse-grained but simpler):
display(dict);
return hash;
value = search(dict, "kiwi", &found); if (found) printf("kiwi -> %d\n", value); else printf("kiwi not found\n");
free(table->buckets); free(table); Here is a working example that ties everything together: c program to implement dictionary using hashing algorithms
KeyValuePair *current = table->buckets[index]; KeyValuePair *prev = NULL;
// Check dictionary size printf("\nTotal number of key-value pairs: %d\n", dict->count); free(old_buckets); To make the dictionary work with any
int index = hash_function(key) % table->size; Chapter 4: Complete Implementation of the Dictionary Let's build the dictionary step by step. 4.1 Create and Initialize Dictionary // Create a new hash table HashTable* create_hash_table(int size) HashTable *table = (HashTable*)malloc(sizeof(HashTable)); if (!table) return NULL; table->size = size; table->count = 0;