📅  最后修改于: 2023-12-03 15:16:37.536000             🧑  作者: Mango
在Java中,排序链表是一种常见的数据结构。有时需要将两个已排序的链表合并成一个新的已排序链表。本文将介绍如何通过Java程序将两个排序链表合并为一个新的排序链表。
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode dummyHead = new ListNode(0); // 定义新链表的头节点
ListNode currentNode = dummyHead; // 定义当前节点
while (l1 != null && l2 != null) {
if(l1.val < l2.val) {
currentNode.next = l1;
l1 = l1.next;
} else {
currentNode.next = l2;
l2 = l2.next;
}
currentNode = currentNode.next;
}
if (l1 != null) {
currentNode.next = l1;
} else {
currentNode.next = l2;
}
return dummyHead.next; // 返回新链表的头节点
}
}
上述代码中,mergeTwoLists
方法接收两个已排序链表l1
和l2
作为参数,通过比较它们的节点值创建一个新的已排序链表。遍历过程中,使用dummyHead
作为新链表的头节点,并使用currentNode
记录当前节点。逐一比较l1
和l2
的节点值,将较小值的节点加入新链表中,并将当前节点后移一位。如果其中一个链表已经遍历完,将另一个链表中的所有剩余节点加到新链表中。最后返回新链表的头节点即可。
通过Java程序合并新列表中的两个排序链表,可以将两个已排序链表的节点值比较后,重新创建一个已排序链表。此方法可以应用于多个排序链表的合并。