剑指Offer第25题——合并两个有序链表

2019-04-26  本文已影响0人  wuhuaguo丶
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

应该设置两个指针,第一个指针指向合并之后链表的头结点,第二个指针指向合并之后链表的当前节点。

    public ListNode mergeTwoSortedList_P(ListNode list1, ListNode list2) {
        if (list1 == null) {
            return list2;
        }
        if (list2 == null) {
            return list1;
        }
        ListNode pHead = null;
        ListNode cur = null;
        while (list1 != null && list2 != null) {
            if (list1.val < list2.val) {
                if (pHead == null) {
                    pHead = list1;
                    // 当前指针指向list1
                    cur = list1;
                    list1 = list1.next;
                } else {
                    // 当前指针的下一个节点为list1
                    cur.next = list1;
                    // 当前指针后移
                    cur = cur.next;
                    list1 = list1.next;
                }
            } else {
                if (pHead == null) {
                    pHead = list2;
                    cur = list2;
                    list2 = list2.next;
                } else {
                    cur.next = list2;
                    cur = cur.next;
                    list2 = list2.next;
                }
            }
        }
        if (list1 == null) {
            cur.next = list2;
        }
        if (list2 == null) {
            cur.next = list1;
        }
        return pHead;

    }
上一篇下一篇

猜你喜欢

热点阅读