Gonkoy
Gonkoy

Reputation: 33

Need help deleting node from linked list c++

Hello everyone i'm currently trying to delete a node from my linked list from any position, i can successfully delete the node from the beginning just can't seem to figure out how to delete anything else.

and here's my remove function, any help would be much appreciated.

void PartList::removePart(string partNum){

Part * walker = firstPointer;
Part * stalker = NULL;
while (walker != NULL)
{
    stalker = walker;
    if (partNum == walker->partNo)
        break;
    walker = walker->link;
}

    if (walker == NULL)
    {
        cout << "Part Number Not Found..." << endl;
    }
    else {
        if(stalker == NULL){
            cout << "Not Found.."<< endl;
        }
        else {
            stalker->link = walker->link;
        }
    }
    if (firstPointer->partNo == partNum)
    {
        firstPointer = walker;
        walker->link = NULL;
    }
    if (stalker->partNo == partNum)
    {
        stalker = NULL;
        walker->link = NULL;
    }
    walker->link = firstPointer;


        numParts--;
        delete stalker;
        stalker = NULL;

}

Upvotes: 0

Views: 84

Answers (1)

You need to write more readable code. It is more complicated than it needs to be. Lets assume that your list is correctly build. Deleting node:

Part * walker = firstPointer;
Part * stalker = NULL;

if(walker == NULL){
    cout << "Empty list" << endl;

    return;
}

while (walker != NULL){
    //stalker = walker; //not here!
    if (partNum == walker->partNo){
        if(walker == firstPointer){ //first node
            //do your stuff, delete walker
            ...
            firstPointer = NULL;
        }
        else{
            stalker->link = walker->link;
            //do stuff, delete walker
            ...
         }

        return;
    }
    stalker = walker; //here!
    walker = walker->link;
}

cout << "Part Number Not Found..." << endl;

Upvotes: 1

Related Questions