Your get_tail_child always returns NULL
for (tail_ch = head_ch; tail_ch; tail_ch = tail_ch->next);
return tail_ch; for (tail_ch = head_ch; tail_ch; tail_ch = tail_ch->next);
return tail_ch;Going to want to add a test case with more than one child at a time. I think as is it loses all but the most recent child.