Java:合并两个有序链表。

定义一个傀儡结点node。

因为这两个链表都是有序的,先比较两个链表的第一项,

比较小的那一项跟在傀儡结点的后面,较大的则跟下一项进行比较。

当有链表为空时,直接将node.next等于另一链表的剩余结点。

代码如下:

 public ListNode mergeTwoLists(ListNode headA, ListNode headB) {
        ListNode node = new ListNode(-1);
        ListNode prev = node;
        if(headA==null) {
            return headB;
        }
        if(headB==null) {
            return headA;
        }
        //1 2 4
        //1 3 4 
        while (headA!=null&&headB!=null) {
            if(headA.val<headB.val) {
                node.next = headA;
                
                headA = headA.next;
            }else {
                node.next = headB;
                
                headB = headB.next;
            }
            node = node.next;
        }
        if(headA!=null) {
            node.next = headA;
        }
        if(headB!=null) {
            node.next = headB;
        }
        return prev.next;
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个Java的示例代码,用于合并两个有序链表: ```java class ListNode { int val; ListNode next; ListNode(int val) { this.val = val; } } public class MergeTwoSortedLists { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode dummy = new ListNode(0); ListNode current = dummy; while (l1 != null && l2 != null) { if (l1.val < l2.val) { current.next = l1; l1 = l1.next; } else { current.next = l2; l2 = l2.next; } current = current.next; } if (l1 != null) { current.next = l1; } if (l2 != null) { current.next = l2; } return dummy.next; } } ``` 这个代码中,我们定义了一个`ListNode`类来表示链表节点,每个节点都有一个整数值`val`和一个指向下一个节点的指针`next`。然后,我们创建了一个名为`MergeTwoSortedLists`的类,其中包含了一个`mergeTwoLists`方法,用于合并两个有序链表。我们使用了一个虚拟节点`dummy`来简化代码逻辑。 在`mergeTwoLists`方法中,我们使用两个指针`l1`和`l2`分别指向两个链表的头节点,然后我们比较两个节点的值,将较小的节点链接到结果链表中,并将对应的指针向后移动一位。重复这个过程,直到其中一个链表遍历完。最后,我们将剩余未遍历完的链表直接链接到结果链表的末尾。 最后,我们返回虚拟节点`dummy`的下一个节点作为合并后的链表头节点。 请注意,这只是一个示例代码,你可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值