Collision happens when two different keys hash to the same index in the hash table.
Click to reveal answer
beginner
What does 'open addressing' mean in collision handling?
Open addressing means finding another empty spot in the hash table when a collision occurs, instead of using linked lists.
Click to reveal answer
beginner
How does linear probing work in open addressing?
Linear probing checks the next slot in the table one by one until it finds an empty slot to place the new key.
Click to reveal answer
intermediate
What problem can linear probing cause if many collisions happen?
Linear probing can cause clustering, where many keys group together, making search slower.
Click to reveal answer
beginner
In linear probing, how do you find a key during search?
Start at the hashed index and check slots one by one until you find the key or an empty slot (meaning key not present).
Click to reveal answer
What happens when a collision occurs in open addressing with linear probing?
ADiscard the new key
BCreate a linked list at the collided slot
CInsert the key in the next available slot sequentially
DResize the hash table immediately
✗ Incorrect
Linear probing inserts the key in the next available slot by checking slots one by one.
Which of these is a downside of linear probing?
AIt can cause clustering of keys
BIt never handles collisions
CIt uses extra memory for linked lists
DIt requires complex data structures
✗ Incorrect
Linear probing can cause clustering, where many keys group together, slowing down operations.
How do you know a key is not in the hash table when searching with linear probing?
AWhen the table is full
BWhen you reach the end of the table
CWhen you find a different key
DWhen you find an empty slot during probing
✗ Incorrect
Finding an empty slot during probing means the key was never inserted.
What is the first step in inserting a key using linear probing?
ASearch the entire table
BHash the key to get an index
CResize the table
DDelete an existing key
✗ Incorrect
You first hash the key to find the initial index to try inserting.
If the hashed index is occupied, what does linear probing do next?
ACheck the next index (index + 1)
BStop and fail insertion
CJump to a random index
DUse a linked list at that index
✗ Incorrect
Linear probing checks the next index sequentially until it finds an empty slot.
Explain how collision handling works using open addressing with linear probing.
Think about what happens when two keys want the same spot and how linear probing finds a new spot.
You got /4 concepts.
Describe the main advantage and disadvantage of using linear probing for collision handling.
Consider memory use and performance impact.
You got /2 concepts.
Practice
(1/5)
1. What is the main idea behind linear probing in collision handling for hash tables?
easy
A. If a collision occurs, check the next slot sequentially until an empty slot is found.
B. Use a linked list to store multiple elements at the same index.
C. Double the size of the hash table when a collision happens.
D. Rehash all elements using a new hash function when a collision occurs.
Solution
Step 1: Understand linear probing concept
Linear probing handles collisions by checking the next slot in the array sequentially when the desired slot is occupied.
Step 2: Compare options with definition
If a collision occurs, check the next slot sequentially until an empty slot is found. correctly describes this sequential checking. Other options describe different collision handling methods.
Final Answer:
If a collision occurs, check the next slot sequentially until an empty slot is found. -> Option A
Quick Check:
Linear probing = sequential slot check [OK]
Hint: Linear probing means try next slot one by one [OK]
Common Mistakes:
Confusing linear probing with chaining
Thinking rehashing happens on every collision
Assuming table size doubles automatically
2. Which of the following is the correct way to calculate the next index in linear probing for a hash table of size m when current index is i?
easy
A. next_index = (i + 3) % m
B. next_index = (i * 2) % m
C. next_index = (i - 1) % m
D. next_index = (i + 1) % m
Solution
Step 1: Recall linear probing formula
Linear probing moves to the next slot by adding 1 to the current index and taking modulo with table size.
Step 2: Match formula with options
next_index = (i + 1) % m matches this formula: (i + 1) % m. Other options use incorrect increments.
Final Answer:
next_index = (i + 1) % m -> Option D
Quick Check:
Linear probing next index = (i + 1) mod m [OK]
Hint: Linear probing adds 1 to index modulo table size [OK]
Common Mistakes:
Using multiplication instead of addition
Subtracting instead of adding
Adding a number other than 1
3. Consider a hash table of size 5 using linear probing. The hash function is h(k) = k % 5. Insert keys 7, 12, 17 in order. What is the final state of the table?
medium
A. [7, 12, 17, null, null]
B. [7, null, 12, 17, null]
C. [null, null, 7, 12, 17]
D. [null, 7, 12, 17, null]
Solution
Step 1: Calculate initial positions using hash function
Insert 7 at index 2. For 12, index 2 is occupied, so try index 3. Insert 12 at index 3. For 17, indices 2 and 3 are occupied, so insert at index 4.
Final Answer:
[null, null, 7, 12, 17] -> Option C
Quick Check:
Keys placed at 2, 3, 4 sequentially [OK]
Hint: Check hash index, then next slots if occupied [OK]
Common Mistakes:
Placing all keys at same index ignoring collisions
Not wrapping around table size
Misplacing keys at wrong indices
4. The following code snippet tries to insert keys into a hash table using linear probing. What is the error?
int hash(int key, int size) { return key % size; }
void insert(int table[], int size, int key) {
int index = hash(key, size);
while (table[index] != -1) {
index = (index + 1) % size;
}
table[index] = key;
}
medium
A. The index update should subtract 1 instead of adding 1.
B. The table is not initialized with -1 for empty slots.
C. The while loop condition should check for table[index] == -1.
D. The hash function should use multiplication instead of modulo.
Solution
Step 1: Analyze the insert function logic
The function checks for empty slots by comparing with -1, so the table must be initialized with -1 to mark empty slots.
Step 2: Identify missing initialization
If the table is not initialized with -1, the condition table[index] != -1 may fail incorrectly, causing wrong insertions or infinite loops.
Final Answer:
The table is not initialized with -1 for empty slots. -> Option B
Quick Check:
Empty slots must be marked -1 [OK]
Hint: Initialize table slots with -1 before insertion [OK]
Common Mistakes:
Ignoring table initialization
Wrong loop condition in while
Incorrect hash function usage
5. You have a hash table of size 7 using linear probing. Insert keys 10, 20, 15, 7, 32 in order using hash function h(k) = k % 7. After all insertions, what is the content of the table?
hard
A. [7, 15, null, 10, 32, null, 20]
B. [null, 15, 32, 10, null, 20, 7]
C. [null, 15, 32, 10, 20, 7, null]
D. [null, 15, 32, 10, 20, null, 7]
Solution
Step 1: Calculate initial indices for each key
h(10)=3, h(20)=6, h(15)=1, h(7)=0, h(32)=4.
Step 2: Insert keys using linear probing
Insert 10 at index 3. Insert 20 at index 6. Insert 15 at index 1. Insert 7 at index 0. Insert 32 at index 4 (empty). Final table: [7, 15, null, 10, 32, null, 20].
Step 3: Match with options
[7, 15, null, 10, 32, null, 20] matches the correct order. Nulls at indices 2 and 5.
Final Answer:
[7, 15, null, 10, 32, null, 20] -> Option A
Quick Check:
Keys placed at their hash or next free slot [OK]
Hint: Calculate hash, insert or probe next free slot [OK]
Common Mistakes:
Not probing when slot is occupied
Misplacing keys at wrong indices
Ignoring table size wrap-around
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.