合并两个有序链表-基于Go

/**
 * 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
}
原文地址:https://www.cnblogs.com/pangqianjin/p/14632077.html