# What Is Collision in C and Data Structure?

//

Angela Bailey

What Is Collision in C and Data Structure?

Collision is an important concept in the field of data structures, specifically when dealing with hash tables. In this article, we will explore what collision is, why it happens, and how it can be handled in C programming.

## Understanding Collision

In simple terms, collision occurs when two or more keys in a hash table are mapped to the same index. Hash tables are data structures that provide efficient key-value pair storage and retrieval.

They use a hashing function to map keys to indices in an array. However, due to the finite size of the array, it is possible for multiple keys to end up at the same index.

Why Does Collision Happen?

Collision can occur due to various reasons:

• Different keys may have the same hash value
• The hashing function may not distribute keys evenly
• The size of the array may be limited

## Handling Collision

When collision occurs, there are several techniques that can be used to handle it:

### 1. Separate Chaining

In this technique, each index of the hash table contains a linked list. When two or more keys collide at an index, they are stored as separate nodes in the linked list. This allows multiple values to coexist at the same index.

In open addressing, when a collision occurs at an index, an alternative location within the hash table is found for storing the key-value pair. There are different methods for finding this alternative location such as linear probing (checking subsequent indices), quadratic probing (using quadratic equations), and double hashing (using a second hash function).

### 3. Robin Hood Hashing

Robin Hood hashing is a variation of open addressing where keys are stored according to their “distance” from their ideal position. When a collision occurs, the key with the smaller “distance” from its ideal position is moved ahead in the table, making space for the new key.

## Conclusion

Collision is an inevitable aspect of hash tables in data structures. Understanding why it happens and how to handle it is crucial for efficient storage and retrieval of data. The techniques mentioned above – separate chaining, open addressing, and Robin Hood hashing – provide solutions to effectively deal with collisions in C programming.