insert is no good.
depending on where you want to insert, which, if unsorted, would be at the head to make it efficient, you need to connect the pointers (you set to null in your insert).
so
list is empty, so its pointer is null.
new guy's next = head/main list pointer, not null, to do it as I described. If you want it inserted in order or at the far end, you need more.
looks like this...
null / empty,
insert 3
3 -> null //end of list, which happened to be the empty list pointer, how handy!
insert 7
7->3->null
and so on.