java
/**
* Definition for singly-linked list.
* public 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);
//cur和头结点指向同一个地址,通过使用cur,可以持续增加链条,而不改变头结点。
//因为最后要返回链条,保持头结点不动,让其代理人cur不断游动。
ListNode cur = dummyHead;
while (l1 != null && l2 != null) {
if (l1.val < l2.val) {
cur.next = l1;
cur = cur.next;
l1 = l1.next;
} else {
cur.next = l2;
cur = cur.next;
l2 = l2.next;
}
}
//l1 为null,则把剩下的链表直接给cur
if (l1 == null) {
cur.next = l2;
}
if (l2 == null) {
cur.next = l1;
}
//因为dummyHead是头结点,应该返回的是链表,同时没有头结点
return dummyHead.next;
}
}
python
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
res = ListNode(None)
node = res
while(l1!=None and l2!=None):
if l1.val<=l2.val:
node.next = l1
l1 = l1.next
else:
node.next = l2
l2 = l2.next
node = node.next
if l1:
node.next = l1
if l2:
node.next = l2
return res.next