private Node insert(Node head,Node curr){
        if(head == null){
            return curr;
        }
        Node prev = null;
        Node start = head;
        while(start != null && curr.data >= start.data){
            prev = start;
            start = start.next;
        }
        if(prev == null){
            curr.next = head;
            head = curr;
        }else{
            prev.next = curr;
            curr.next = start;
        }
        return head;
    }
http://www.geeksforgeeks.org/given-a-linked-list-which-is-sorted-how-will-you-insert-in-sorted-way/
Test cases:
0 nodes
1 nodes 
2 or more nodes
already sorted
reverse sorted
negative positive numbers
src/com/interview/linklist/InsertionSortLinkList.java