private Node frontBackSplit(Node head){
        if(head == null){
            return null;
        }
        Node slow = head;
        Node fast = head.next;
        while(fast != null && fast.next != null){
            slow = slow.next;
            fast = fast.next.next;
        }
        Node newHead = slow.next;
        slow.next = null;
        return newHead;
    }
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