/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
head := &ListNode{}
p := head
for l1 != nil && l2 != nil {
if l1.Val > l2.Val {
p.Next = l2
p, l2 = p.Next, l2.Next
} else {
p.Next = l1
p, l1 = p.Next, l1.Next
}
}
if l1 != nil {
p.Next = l1
}
if l2 != nil {
p.Next = l2
}
return head.Next
}