listTail:
check if list next is NULL, if it is return the current node
else, recurse next value.
listMax:
if list next = NULL, return current value
else: initialise max to the recursed called next value
if the current value greater than max, return the current one, otherwise
return max
listSum:
if list is null, return 0;
else; return the current value + helper(next).
listInsertOrdered:
if the head is null, or the value is less than head value:
create newnode, newnode next is head, return n;
else: head->next is the recurse call of the next value
return the head.
listInsertNth:
if head is null, or n <= 0:
create a newnode,
make the newnode point to head, return the newnode.
else {
make the head point to the recursed call of the next node
return head;