簡體   English   中英

需要幫助從鏈接列表中刪除節點C ++

[英]Need help deleting node from linked list c++

大家好,我目前正在嘗試從任何位置從鏈接列表中刪除節點,我可以從一開始就成功刪除該節點,只是似乎無法弄清楚如何刪除其他任何內容。

這是我的刪除功能,非常感謝您的幫助。

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;

}

您需要編寫更具可讀性的代碼。 它比需要的要復雜。 假設您的列表正確構建。 刪除節點:

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM