Step 4 of 6
Free the whole list
Every node was malloc'd, so every node must be freed. The trap: after free(p) you can't read p->next anymore. Save it first.
struct Node *next = p->next;
free(p);
p = next;
Your turn: write int free_list(struct Node *head) that frees every node and returns how many it freed.