假设有两个大小有序的单链表 合并两个有序链表 合并后链表也是有序的链表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
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;
原文地址: https://www.cveoy.top/t/topic/ilQw 著作权归作者所有。请勿转载和采集!