Collision happens when two different keys get mapped to the same index in the hash table.
Click to reveal answer
beginner
How does chaining handle collisions in a hash table?
Chaining stores all elements that hash to the same index in a linked list or chain at that index.
Click to reveal answer
beginner
What data structure is commonly used in chaining to store collided elements?
A linked list is commonly used to store collided elements at the same index in chaining.
Click to reveal answer
intermediate
What is the advantage of using chaining over open addressing?
Chaining can handle more elements than the size of the hash table and avoids clustering issues.
Click to reveal answer
beginner
Explain the process of searching for a key in a hash table using chaining.
First, compute the hash index. Then, traverse the linked list at that index to find the key.
Click to reveal answer
What happens when two keys hash to the same index in chaining?
AThe hash table resizes immediately
BOne key replaces the other
CThey are stored in a linked list at that index
DThe keys are discarded
✗ Incorrect
In chaining, collided keys are stored in a linked list at the same index.
Which data structure is typically used in chaining to handle collisions?
AArray
BStack
CQueue
DLinked list
✗ Incorrect
Linked lists are used to store multiple elements at the same index in chaining.
What is the main benefit of chaining in collision handling?
AIt avoids clustering and can store unlimited elements at one index
BIt uses less memory
CIt makes hash function faster
DIt prevents collisions completely
✗ Incorrect
Chaining avoids clustering and can store multiple elements at the same index using linked lists.
How do you search for a key in a chained hash table?
ATraverse the linked list at the hashed index
BCheck only the array index
CSearch the entire hash table
DUse binary search on the array
✗ Incorrect
You traverse the linked list at the hashed index to find the key.
What is a drawback of chaining?
AIt wastes memory for empty slots
BIt can cause longer search times if chains are long
CIt cannot handle collisions
DIt requires resizing the hash table often
✗ Incorrect
Long chains can slow down search, insert, and delete operations.
Describe how collision handling using chaining works in a hash table.
Think about what happens when two keys go to the same place.
You got /4 concepts.
Explain the advantages and disadvantages of using chaining for collision handling.
Consider both memory and speed aspects.
You got /4 concepts.
Practice
(1/5)
1. What is the main idea behind collision handling using chaining in hash tables?
easy
A. Store all elements that hash to the same index in a linked list at that index
B. Resize the hash table when a collision occurs
C. Use a second hash function to find a new index
D. Ignore collisions and overwrite existing data
Solution
Step 1: Understand collision in hash tables
When two keys hash to the same index, a collision occurs.
Step 2: Explain chaining method
Chaining stores all collided elements in a linked list at that index to keep them separate.
Final Answer:
Store all elements that hash to the same index in a linked list at that index -> Option A
Quick Check:
Chaining = linked list at index [OK]
Hint: Chaining means linked list at each hash index [OK]
Common Mistakes:
Thinking chaining resizes the table
Confusing chaining with open addressing
Ignoring collisions instead of handling them
2. Which of the following is the correct way to declare a hash table using chaining in C++?
easy
A. std::vector<int> hashTable(size);
B. std::list hashTable(size);
C. std::vector hashTable(size);
D. std::list<int> hashTable(size);
Solution
Step 1: Understand chaining data structure
Chaining uses a list at each index, so a vector of lists is needed.
Step 2: Check syntax correctness
std::vector creates a vector where each element is a list, perfect for chaining.
Final Answer:
std::vector hashTable(size); -> Option C
Quick Check:
Vector of lists = chaining hash table [OK]
Hint: Chaining = vector of lists in C++ [OK]
Common Mistakes:
Using list of vectors instead of vector of lists
Using vector of ints only (no chaining)
Incorrect container nesting order
3. Consider the following code snippet using chaining for collision handling:
std::vector hashTable(5);
int hashFunction(int key) { return key % 5; }
// Insert keys
hashTable[hashFunction(7)].push_back(7);
hashTable[hashFunction(12)].push_back(12);
hashTable[hashFunction(17)].push_back(17);
// Print contents at index 2
for (int val : hashTable[2]) {
std::cout << val << " ";
}
What will be the output?
medium
A. 7 12 17
B. 12 17
C. 7
D. No output
Solution
Step 1: Calculate hash indices for keys
7 % 5 = 2, 12 % 5 = 2, 17 % 5 = 2. All keys go to index 2.
Step 2: Check what is printed at index 2
All three keys (7, 12, 17) are stored in the list at index 2 and printed in insertion order.
Final Answer:
7 12 17 -> Option A
Quick Check:
Keys mod 5 = 2, print all at index 2 [OK]
Hint: Calculate key % size to find index [OK]
Common Mistakes:
Forgetting all keys collide at index 2
Printing keys at wrong index
Assuming keys overwrite each other
4. The following code attempts to insert keys into a hash table using chaining but causes a runtime error:
std::vector hashTable;
int hashFunction(int key) { return key % 10; }
void insertKey(int key) {
int index = hashFunction(key);
hashTable[index].push_back(key);
}
int main() {
insertKey(15);
insertKey(25);
return 0;
}
What is the error and how to fix it?
medium
A. hashFunction returns wrong index; change modulo to 5
B. hashTable is empty; initialize with size before insertions
C. push_back is wrong method; use insert instead
D. No error; code runs fine
Solution
Step 1: Identify cause of runtime error
hashTable is declared but not sized, so accessing hashTable[index] causes out-of-range error.
Step 2: Fix by initializing hashTable size
Initialize hashTable with size 10 (e.g., std::vector hashTable(10);) before insertions.
Final Answer:
hashTable is empty; initialize with size before insertions -> Option B
Quick Check:
Vector size must match hash range [OK]
Hint: Initialize vector size before accessing indices [OK]
Common Mistakes:
Ignoring vector size causes crash
Changing hash function unnecessarily
Using wrong list methods
5. You have a hash table of size 7 using chaining. You insert keys: 10, 21, 17, 14, 28, 35. After all insertions, which index will have the longest chain and what will be its contents? Use hash function: index = key % 7.