順序付きリンク リストの削除アルゴリズムを作成しようとしています。検索とトラバースはダウンしていると思いますが、削除するとうまくいきます。毎回クラッシュします。誰かがこれを修正するのを手伝ってくれますか?
クラスでListNode呼び出さheadれた構造体へのプライベート ポインターがあります。構造体には、、およびが含まれTestLLます。この関数は、削除するノードが見つかって削除された場合、または見つからなかった場合に戻ります。ListNodeint Keydouble dataValueListNode *nexttruefalse
私のコード:
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;
}