public Node sort(Node head, boolean isAscending){

        if(head == null || head.next == null){
            return head;
        }
        Node head1 = frontBackSplit(head);
        head = sort(head,isAscending);
        head1 = sort(head1,isAscending);
        return sortedMerge(head, head1, isAscending);
    }
http://www.geeksforgeeks.org/merge-sort-for-linked-list/
Test cases
0 nodes
1 nodes
2 nodes
3 nodes
fully sorted
reverse sorted
src/com/interview/linklist/MergeSortLinkList.java