Chaining

When two keys collide, chaining strings them up in the same bucket and walks the chain on lookup.

buckets[2] ─→ [ "apple" | 3 ] ─→ [ "ant" | 1 ] ─→ NULL

Simple, forgiving of mediocre hash functions, but spends memory on every next pointer. The other common strategy is open addressing, which keeps entries inside the bucket array itself.