package mergesorted type ListNode struct { Val int Next *ListNode } func reverse(list *ListNode) *ListNode { var result *ListNode for list != nil { result = &ListNode{Val: list.Val, Next: result} list = list.Next } return result } func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode { var result *ListNode for list1 != nil || list2 != nil { if list1 == nil { result = &ListNode{Val: list2.Val, Next: result} list2 = list2.Next } else if list2 == nil { result = &ListNode{Val: list1.Val, Next: result} list1 = list1.Next } else if list1.Val < list2.Val { result = &ListNode{Val: list1.Val, Next: result} list1 = list1.Next } else { result = &ListNode{Val: list2.Val, Next: result} list2 = list2.Next } } return reverse(result) } func MergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode { return mergeTwoLists(list1, list2) }