![](https://img2020.cnblogs.com/blog/2261524/202104/2261524-20210408143238405-1947332201.png)
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
var l = &ListNode{}
var curr = l // curr是指向l的指针,最后返回的是l的Next,curr的val并不关心
for l1!=nil && l2!=nil{
if l1.Val<=l2.Val{
// l1小则指向l1
curr.Next = l1
// curr和l1向后移动
curr = curr.Next
l1 = l1.Next
}else{
// l2小则指向l2
curr.Next = l2
// curr和l2向后移动
curr = curr.Next
l2 = l2.Next
}
}
if l1==nil{
// l1走完了,直接拼上l2
curr.Next = l2
}else{
// l2走完了,直接拼上l1
curr.Next = l1
}
return l.Next
}