public Node mergeLinked(Node linked1, Node linked2){ // 如果其中一个链表为空,则直接返回另一个链表 if (linked1 == null) { return linked2; } if (linked2 == null) { return linked1; }

// 创建一个新的链表头节点,并初始化为null
Node newHead = null;
// 如果链表1的第一个节点的值小于等于链表2的第一个节点的值,则将新链表的头节点设为链表1的第一个节点
if (linked1.val <= linked2.val) {
    newHead = linked1;
    linked1 = linked1.next;
} else {
    // 否则将新链表的头节点设为链表2的第一个节点
    newHead = linked2;
    linked2 = linked2.next;
}

// 创建一个指针指向新链表的头节点
Node current = newHead;
// 循环遍历两个链表,直到其中一个链表为空
while (linked1 != null && linked2 != null) {
    // 如果链表1的当前节点的值小于等于链表2的当前节点的值,则将新链表的当前节点的下一个节点设为链表1的当前节点,并更新链表1的当前节点
    if (linked1.val <= linked2.val) {
        current.next = linked1;
        linked1 = linked1.next;
    } else {
        // 否则将新链表的当前节点的下一个节点设为链表2的当前节点,并更新链表2的当前节点
        current.next = linked2;
        linked2 = linked2.next;
    }
    // 更新新链表的当前节点
    current = current.next;
}

// 如果链表1还有剩余节点,则将新链表的当前节点的下一个节点设为链表1的剩余节点
if (linked1 != null) {
    current.next = linked1;
}
// 如果链表2还有剩余节点,则将新链表的当前节点的下一个节点设为链表2的剩余节点
if (linked2 != null) {
    current.next = linked2;
}

// 返回合并后的链表的头节点
return newHead;
假设有两个大小有序的单链表 合并两个有序链表 合并后链表也是有序的链表1 1 - 2 - 5 -- 6 -- null链表2 2 -- 4 -- 7 -- null合并结果 1 -- 2 -- 2 -- 4 -- 5 -- 6 -- 7 -- null 合并两个有序链表 param linked1 有序链表1 param linked2 有序链表2 return 合并链表的头结点public No

原文地址: https://www.cveoy.top/t/topic/ilQw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录