这是我删除链表的功能:
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 释放某些东西并不会删除它,只会将其标记为可用,所以我不确定如何判断这是否正确。