📌  相关文章
📜  Java程序合并新列表中的两个排序链表(1)

📅  最后修改于: 2023-12-03 15:16:37.536000             🧑  作者: Mango

Java程序合并新列表中的两个排序链表

在Java中,排序链表是一种常见的数据结构。有时需要将两个已排序的链表合并成一个新的已排序链表。本文将介绍如何通过Java程序将两个排序链表合并为一个新的排序链表。

实现步骤
  1. 定义一个新的链表。
  2. 遍历两个排序链表,比较它们的每个节点值,并将较小的节点加入新链表中。
  3. 如果其中一个链表已经遍历完,将另一个链表中的所有剩余节点加到新链表中。
代码实现
/**
* 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方法接收两个已排序链表l1l2作为参数,通过比较它们的节点值创建一个新的已排序链表。遍历过程中,使用dummyHead作为新链表的头节点,并使用currentNode记录当前节点。逐一比较l1l2的节点值,将较小值的节点加入新链表中,并将当前节点后移一位。如果其中一个链表已经遍历完,将另一个链表中的所有剩余节点加到新链表中。最后返回新链表的头节点即可。

总结

通过Java程序合并新列表中的两个排序链表,可以将两个已排序链表的节点值比较后,重新创建一个已排序链表。此方法可以应用于多个排序链表的合并。