Почему моя функция удаления узла фактически не удаляет узел? - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь создать связанный список, который больше похож на связанный список C, но он не удаляет узел навсегда. Когда я распечатываю связанный список после запуска функции, узел все еще там. Почему моя функция удаления узла фактически не удаляет узел?

bool removeFromList(int delID, node* &head){

    node* temp = new node;
    node* curr = head;

    while(curr != NULL && curr->id != delID){
        temp = curr;
        curr = curr->next;
    }

    if(curr == NULL){
        cout << delID << " was not in the has table." << endl;
        return false;
    }
    else{
        node* next = curr->next;
        cout << "Node with id " << curr->id << " was deleted." << endl;
        delete curr;
        curr = NULL;
        temp->next = next;

        return true;
    }

}

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Вам необходимо назначить голову второму элементу в списке

0 голосов
/ 30 октября 2018

Когда удаляемый элемент является первым в списке, вы должны назначить заголовок второму (если существует) элементу списка. То есть:

bool removeFromList(int delID, node* &head){
    //Checking for the front of the list
    if (head != NULL && head->id == delID){
         head = head->next;
         return true;
    }

    node* temp; //You don't need to initialize this
    ...//the rest of your code may remains equal
}
...