順序付きリンク リストの削除アルゴリズムを作成しようとしています。検索とトラバースはダウンしていると思いますが、削除するとうまくいきます。毎回クラッシュします。誰かがこれを修正するのを手伝ってくれますか?
クラスでListNode
呼び出さhead
れた構造体へのプライベート ポインターがあります。構造体には、、およびが含まれTestLL
ます。この関数は、削除するノードが見つかって削除された場合、または見つからなかった場合に戻ります。ListNode
int Key
double dataValue
ListNode *next
true
false
私のコード:
bool TestLL::Delete(int Key)
{
ListNode *back = NULL, *temp = head;
//Search for the node to delete
while ((temp != NULL) && (key != temp -> key))
//advance the pointers
back = temp;
temp = temp->next;
}
//Check for node to delete not being found
if (temp == NULL)
{
return false;
}
//Check for deleting the head of the list
else if (back == NULL) // I'm very unsure of my else if and else
{
delete temp;
}
else // Remove node other than at the head
{
delete temp;
}
//deallocate memory used by the removed node
free(temp);
return true;
}