[Hash Table] Index 0 -> [Node: "apple" -> 5] -> [Node: "banana" -> 12] -> NULL Index 1 -> NULL Index 2 -> [Node: "cherry" -> 7] -> NULL Choosing a Hashing Algorithm

// A key-value pair (node in linked list) typedef struct Entry char key[MAX_KEY_LEN]; char value[MAX_VALUE_LEN]; struct Entry *next; Entry;

The hash function converts a string key into an integer index. A common choice is the (multiplier 31), which minimizes collisions for strings.

/* -------------------------------------------------------------

return dict;

If all keys hash to the same bucket, operations degrade to O(n) – this is extremely rare with a proper hash function.

curr = curr->next;

/* Structure for a node in the linked list (key-value pair) */ typedef struct Node char key; / Dynamically allocated key string / int value; / Associated integer value */ struct Node next; / Next node in the chain */ Node;

case 5: printf("Total number of entries: %d\n", dict->count); break;