> my_list = search_tnode(my_list,key);
The big problem here, is that if you find something, everything before the found node is just leaked away.

Perhaps something like
found_node =...