[英]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.