Sửa giúp code xóa node đầu trong dslk bị mất các node sau

int deleteNode(node *head,char id[10])
{
    node *prevNode=NULL;
    node *currNode=head;
    int index=1;
    fflush(stdin);gets(id);
    while((currNode!=NULL)&&(strcmp(currNode->data.ID,id)!=0)) //tim node co gia tri id
        {
            prevNode=currNode;
            currNode=currNode->next;
            index++;
        }
     if(currNode!=NULL)
     {
        if(prevNode==NULL) //xoa dau
            {
             head=currNode->next;
             currNode->next=NULL;
             delete currNode;
            }
        else
           {//xoa node k phai dau
            prevNode->next=currNode->next;
            currNode->next=NULL;
            delete currNode;
            }
        return index;
      }
     return 0;
}

các bác xem giúp e hàm xóa node như vậy có đúng k??

e có in ra địa chỉ của head trc và sau khi xóa vi tri ở đầu thì nó là FEEEFEEE

cout<<(void*)head->data.ID<<"\t"<<(void*)head->data.nam; //nam là 1 biến trong data của node tương tự id
deleteNode(head,id);
cout<<(void*)head->data.ID<<"\t"<<(void*)head->data.nam<<"\t"<<(void*)head- >next- >data.ID;

vậy có nghĩa là head bị giải phóng r đúng k ạ?
ai giải thích hộ e cái toán tử delete nghĩa là gì với ạ? :astonished:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?