リンクリストを削除する私の関数は次のとおりです。
void deleteList( NODE* head )
{
NODE* temp1;
NODE* tempNext;
temp1 = head;
tempNext = NULL;
while( temp1 != NULL )
{
tempNext = temp1->next;
free(temp1);
temp1 = tempNext;
}
}
したがって、temp1は最初にヘッドポインタが指している場所を指します。そうでない場合はNULL
、tempNext
リストの次の要素を指すように設定されます。次に、最初の要素(temp1
)が解放temp1
され、ポイントする場所tempNext
を指すように再割り当てされ、プロセスが繰り返されます。
これは、リスト全体を削除するための正しいアプローチですか?
この関数を使用した後にリストを印刷すると、リストが引き続き印刷されるため、これを尋ねます。また、IIRCが何かを解放しても、それは削除されず、使用可能としてマークされるだけなので、これが正しいかどうかを判断する方法がわかりません。