1. type ListNode struct {
    2. Val int
    3. Next *ListNode
    4. }
    5. func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
    6. if l1 == nil {
    7. return l2
    8. }
    9. if l2 == nil {
    10. return l1
    11. }
    12. head := &ListNode{}
    13. p := head
    14. for l1 != nil && l2 != nil {
    15. if l1.Val < l2.Val {
    16. p.Next = l1
    17. l1 = l1.Next
    18. } else {
    19. p.Next = l2
    20. l2 = l2.Next
    21. }
    22. p = p.Next
    23. }
    24. if l1 != nil {
    25. p.Next = l1
    26. }
    27. if l2 != nil {
    28. p.Next = l2
    29. }
    30. return head.Next
    31. }