Freeing Linked Lists

Using this code to walk the list and free each node along the way:

while (pList)
{
  struct Node *temp = pList->next;
  free(pList);
  pList = temp;
}
First iteration:

temp = pList->next;

free(pList);

pList = temp;

Second iteration:

temp = pList->next;

free(pList);

pList = temp;

Third iteration:

temp = pList->next;

free(pList);

pList = temp;

End of while loop.