finished 2.4, use delete not free, switch func arg

switch to passing reference to linked list head so that the head of the list can be deleted / changed