1. /**
    2. * Definition for singly-linked list.
    3. * type ListNode struct {
    4. * Val int
    5. * Next *ListNode
    6. * }
    7. */
    8. func add(l, v *ListNode) *ListNode {
    9. if l.Val < v.Val {
    10. if l.Next != nil {
    11. l.Next = add(l.Next, v)
    12. } else {
    13. l.Next = v
    14. }
    15. } else {
    16. v.Next = l
    17. l = v
    18. }
    19. return l
    20. }
    21. func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
    22. if list1 == nil {
    23. return list2
    24. }
    25. if list2 == nil {
    26. return list1
    27. }
    28. now := list2
    29. for {
    30. x := ListNode{Val: now.Val}
    31. list1 = add(list1, &x)
    32. if now.Next == nil {
    33. break
    34. } else {
    35. now = now.Next
    36. }
    37. }
    38. return list1
    39. }