void erase(string key){
//…
int idx = hashFn(key);
Node*temp = table[idx];
while(temp->next != NULL){
if(temp->next->key == key){
Node*del = temp->next;
temp->next = del->next;
delete del;
return;
}
}
}
void erase(string key){
//…
int idx = hashFn(key);
Node*temp = table[idx];
while(temp->next != NULL){
if(temp->next->key == key){
Node*del = temp->next;
temp->next = del->next;
delete del;
return;
}
}
}
an edge case is if temp->key==key (only one node/first node is node to be deleted), so handle this separately.
also while deleting del, make sure to make del->next = NULL as the destructor of Node will delete all further nodes ahead.