# 题目

已知节点结构 Node:
function Node(val) {
    this.val = val;
    this.next = null;
}

给定链表n1(见测试用例)
并以升序排序

# 测试用例

var n1 = new Node(3);
var n2 = new Node(2);
var n3 = new Node(5);
n1.next = n2;
n2.next = n3;

# 代码

/**
 * 升序排列链表
 * @param list
 * @returns {*}
 */
function anotherMerge(list) {
//  返回结果
    var result = list;
//    记录当前比较的节点
    var compare = null;
    if (result) {
        compare = result.next;
        result.next = null;
    }
//    循环未排序链表
    while (compare) {
//        缓存下个节点
        var tmp = compare.next;
        var current = result;
        var before = null;
//        循环已排序链表
        while(current) {
            if (current.val < compare.val) {
//                到达已排序链表尾部,将比较节点放在结尾
                if (!current.next) {
                    current.next = compare;
                    compare.next = null;
                    break;
                }
            } else {
//                当前比较节点小于链表头
                if (before === null) {
                    compare.next = result;
                    result = compare;
                    break;
                } else {
//                    插入指定位置
                    before.next = compare;
                    before.next.next = current;
                    break;
                }
            }

            before = current;
            current = current.next;
        }
        compare = tmp;
    }

    return result;
}

# 验证

anotherMerge(n1);