补充一下,上面实现的是归并排序
split()用于拆分
mergeNode()用于合并两个有序的子表。

解决方案 »

  1.   

    private LinkNode mergeSortHelp(LinkNode head)
    {
    LinkNode otherFirst;
    if(head!=null)
    {
    if(head.next!=null)

    otherFirst=split(head);
    head=mergeSortHelp(head);
    otherFirst=mergeSortHelp(otherFirst);
    head=mergeNode(head,otherFirst);
    }
    }
    return head;
    }
    上面的head没有经过任何修改就进入递归,肯定要出这样的错误的
      

  2.   

    因为split()返回的中间的LinkNode,
    split()中head已经改变了
      

  3.   

    那在split方法中
    if(head.next.next==null) return head.next;
    这个条件如果为真的话,head还是没有变就返回了