Open addressing is a collision handling method where, if a collision occurs, the algorithm searches for the next empty slot in the hash table to store the item instead of using linked lists.
Click to reveal answer
beginner
Explain linear probing in open addressing.
Linear probing handles collisions by checking the next slot in the table sequentially (one by one) until an empty slot is found to insert the new item.
Click to reveal answer
intermediate
What problem can occur with linear probing and how is it called?
Linear probing can cause primary clustering, where groups of filled slots form clusters, increasing the search time for empty slots.
Click to reveal answer
beginner
In linear probing, how do you find the next index after a collision at index i in a table of size n?
The next index is calculated as (i + 1) mod n, moving sequentially through the table and wrapping around to the start if needed.
Click to reveal answer
intermediate
Why is it important to keep the hash table size a prime number when using linear probing?
Using a prime number for the table size helps ensure that the probing sequence visits every slot, reducing the chance of infinite loops and improving distribution.
Click to reveal answer
What does linear probing do when a collision happens?
AChecks the next slot sequentially until an empty one is found
BCreates a linked list at the collided slot
CRehashes the entire table
DDeletes the collided item
✗ Incorrect
Linear probing searches the next slots one by one until it finds an empty slot.
Which problem is common with linear probing?
AStack overflow
BPrimary clustering
CMemory leak
DDeadlock
✗ Incorrect
Primary clustering happens when many items cluster together, slowing down insertion and search.
How is the next index calculated in linear probing for a table of size n?
A(current_index * 2) mod n
BRandom index
C(current_index - 1) mod n
D(current_index + 1) mod n
✗ Incorrect
Linear probing moves to the next slot by adding 1 and wrapping around using modulo.
Why use a prime number for the hash table size in linear probing?
ATo ensure all slots can be probed
BTo reduce memory usage
CTo speed up multiplication
DTo avoid collisions completely
✗ Incorrect
Prime table size helps the probe sequence cover all slots, avoiding infinite loops.
What happens if the hash table is full during linear probing?
AThe oldest item is removed
BThe table automatically resizes
CInsertion fails because no empty slot is found
DThe item is inserted anyway
✗ Incorrect
If no empty slot is found after probing all slots, insertion fails.
Describe how collision handling works using open addressing with linear probing.
Think about how you find a free parking spot when your first choice is taken.
You got /5 concepts.
Explain why choosing a prime number for the hash table size is important in linear probing.
Consider how prime numbers help in cycling through all positions evenly.
You got /4 concepts.
Practice
(1/5)
1. What is the main idea behind linear probing in collision handling for hash tables?
easy
A. Double the size of the hash table when a collision happens.
B. Use a linked list to store multiple values at the same index.
C. If a collision occurs, check the next slot sequentially until an empty slot is found.
D. Replace the existing value at the collided slot with the new value.
Solution
Step 1: Understand collision handling
When two keys hash to the same index, a collision occurs.
Step 2: Explain linear probing method
Linear probing resolves collisions by checking the next slot in order until an empty slot is found.
Final Answer:
If a collision occurs, check the next slot sequentially until an empty slot is found. -> Option C
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 collision means resizing immediately
Replacing existing values on collision
2. Which of the following TypeScript code snippets correctly implements the linear probing step to find the next index after a collision in a hash table of size size?
easy
A. let nextIndex = currentIndex % size;
B. let nextIndex = (currentIndex * 2) % size;
C. let nextIndex = (currentIndex - 1) % size;
D. let nextIndex = (currentIndex + 1) % size;
Solution
Step 1: Understand linear probing index calculation
Linear probing moves to the next slot by adding 1 to the current index and wrapping around using modulo.
Step 2: Check code correctness
let nextIndex = (currentIndex + 1) % size; correctly calculates nextIndex as (currentIndex + 1) % size, ensuring wrap-around.
Final Answer:
let nextIndex = (currentIndex + 1) % size; -> Option D
Quick Check:
Next index = (current + 1) mod size [OK]
Hint: Add 1 and mod by size for next slot [OK]
Common Mistakes:
Multiplying index instead of adding
Subtracting index causing negative values
Not using modulo for wrap-around
3. Consider a hash table of size 5 using linear probing. The hash function is h(key) = key % 5. Insert keys in this order: 7, 12, 17. What is the final state of the hash table (index: value)?
medium
A. {0: null, 1: null, 2: 7, 3: 12, 4: 17}
B. {0: 17, 1: 7, 2: 12, 3: null, 4: null}
C. {0: 12, 1: 17, 2: 7, 3: null, 4: null}
D. {0: null, 1: 7, 2: null, 3: 12, 4: 17}
Solution
Step 1: Calculate initial hash indices
7 % 5 = 2, 12 % 5 = 2, 17 % 5 = 2. All keys hash to index 2.
Step 2: Insert keys using linear probing
Insert 7 at index 2. For 12, index 2 is occupied, try 3 (empty), insert 12. For 17, indices 2 and 3 occupied, try 4 (empty), insert 17.
All keys start at 2, linear probe fills next slots [OK]
Hint: All keys hash same, fill next slots sequentially [OK]
Common Mistakes:
Placing all keys at index 2 ignoring collisions
Not wrapping around the table
Misplacing keys at wrong indices
4. The following TypeScript code tries to insert keys into a hash table using linear probing. What is the bug that causes an infinite loop?
const size = 5;
const table = new Array(size).fill(null);
function hash(key: number) { return key % size; }
function insert(key: number) {
let index = hash(key);
while (table[index] !== null) {
index = (index + 1) % size;
}
table[index] = key;
}
insert(5);
insert(10);
insert(15);
insert(20);
insert(25);
insert(30);
medium
A. No check for full table causing infinite loop when table is full.
B. Hash function is incorrect and returns negative indices.
C. Array initialization with null is wrong; should use undefined.
D. Insert function does not update index inside the loop.
Solution
Step 1: Analyze insert loop behavior
The while loop keeps moving index until an empty slot is found.
Step 2: Identify missing full table check
If the table is full, the loop cycles endlessly without exit condition.
Final Answer:
No check for full table causing infinite loop when table is full. -> Option A
Quick Check:
Full table without exit causes infinite loop [OK]
Hint: Add full table check to avoid infinite loop [OK]
Common Mistakes:
Assuming hash function returns negative
Thinking null vs undefined causes loop
Forgetting to update index inside loop
5. You have a hash table of size 7 using linear probing. The hash function is h(key) = key % 7. You insert keys: 14, 21, 28, 35, 42. Then you delete key 21. What is the correct way to handle deletion to avoid search errors in linear probing?
hard
A. Set the slot to null immediately to free it for new insertions.
B. Mark the slot as a special 'deleted' marker instead of null to continue probing.
C. Rehash the entire table after deletion to fix collisions.
D. Do nothing; deletion is not needed in linear probing.
Solution
Step 1: Understand deletion problem in linear probing
Setting slot to null breaks the probe chain, causing search failures for keys after deleted slot.
Step 2: Use special 'deleted' marker
Marking slot as 'deleted' allows probing to continue while allowing new insertions.
Final Answer:
Mark the slot as a special 'deleted' marker instead of null to continue probing. -> Option B
Quick Check:
Deleted marker keeps probe chain intact [OK]
Hint: Use 'deleted' marker slot, not null, after deletion [OK]
Common Mistakes:
Setting slot to null breaks search chain
Rehashing entire table unnecessarily
Ignoring deletion impact on probing
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.