代码的鲁棒性-合并链表

合并两个排序的链表

http://www.nowcoder.com/questionTerminal/d8b6b4358f774294a89de2a6ac4d9337

/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/
function Merge(pHead1, pHead2) {
    // 链表1,2都不存在
    if (pHead1 === null && pHead2 === null) return null;
    // 链表2存在,链表1不存在
    else if (pHead2 !== null && pHead1 === null) return pHead2;
    // 链表1存在,链表2不存在 
    else if (pHead1 !== null && pHead2 === null) return pHead1;
    // 链表1,2都存在
    else {
        let ansHead = new ListNode(-1),
            lastNode = ansHead;
        while (pHead1 && pHead2) {
            if (pHead1.val < pHead2.val) {
                lastNode.next = new ListNode(pHead1.val);
                pHead1 = pHead1.next;
            } else { // 如果二者相等或tempList1当前结点大于tempList2当前结点
                lastNode.next = new ListNode(pHead2.val);
                pHead2 = pHead2.next;
            }
            // 第一次执行创建结果链表头结点
            lastNode = lastNode.next;
        };
        // 剩余部分处理
        if (pHead1) lastNode.next = pHead1;
        else if (pHead2) lastNode.next = pHead2;
        return ansHead.next;
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务