Is my implemenation of erase function correct?

Code :
void erase(string key){
int idx = hashfn(key);
node *temp = table[i];
while(temp->next!=NULL){
if(temp->key==key){
delete temp;
}
temp = temp->next;
}
}

store addres of temp->next before deletion of temp

Thanks a lot for the reply. why i need to store temp->next,
do i need to create a link between prev and next of delete, is this the reason u r saying …

*deleted node in the linked list

after deleting temp.
temp can have any address(garbage) so temp->next may or may not give expected result everytime