C Program To Implement Dictionary Using - Hashing Algorithms
case 6: printf("Exiting...\n"); break;
Delete a key-value pair
// If key doesn't exist, insert at the head of the list newItem->next = ht->table[index]; ht->table[index] = newItem; printf("Key %d inserted (Collision handled).\n", key);
The following example uses a simple hash function and separate chaining to handle collisions. c program to implement dictionary using hashing algorithms
curr = curr->next;
Hashing transforms a variable-length key into a fixed-size integer index. This index determines where the corresponding value is stored in an array. Hash Functions
char* dict_get(Dictionary *dict, const char *key) unsigned int index = hash(key, dict->size); Entry *curr = dict->buckets[index]; while (curr) if (strcmp(curr->key, key) == 0) return curr->value; curr = curr->next; case 6: printf("Exiting
Memory allocation requires strict handling in C to prevent leaks and segmentation faults.
We define two structures:
-------------------------------------------------------------*/ void dict_insert(Dict *d, const char *key, int value) unsigned int idx = hash(key, d->size); Node *curr = d->table[idx]; Resizing involves creating a new, larger bucket array
The basic implementation above can be extended in several ways:
Save the full code in a file hash_dict.c . Compile with GCC:
#include <stdio.h> #include <stdlib.h> #include <string.h>
dict_delete() :
To mitigate worst‑case behaviour, we can periodically the table (rehashing) when the load factor exceeds a threshold (e.g., 0.75). Resizing involves creating a new, larger bucket array and re‑inserting all entries.