go语言实现

package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
  * 
  * @param l1 ListNode类 
  * @param l2 ListNode类 
  * @return ListNode类
*/
func mergeTwoLists( l1 *ListNode ,  l2 *ListNode ) *ListNode {
    // write code here
//  其中一个为空,则返回另外一个
    if l1 == nil {
        return l2
    }
    if l2 == nil {
        return l1
    }

//  得到一个头节点
    var head *ListNode
    if l1.Val > l2.Val {
        head = l2
        l2 = l2.Next
    }else{
        head = l1
        l1 = l1.Next
    }

//  node节点主要用于引用下一个元素节点
    node := head
    for l1 != nil || l2 != nil {
//      两个都不为空,则需要比较两个链表节点大小,并把对应节点连接到node的next中
        if l1 != nil && l2 != nil {
            if l1.Val > l2.Val {
                node.Next = l2
                l2 = l2.Next
            }else{
                node.Next = l1
                l1 = l1.Next
            }
            node = node.Next
            continue
        }

//      其中一个链表为空
        if l1 != nil {
            node.Next = l1
            l1 = nil
        }
        if l2 != nil {
            node.Next = l2
            l2 = nil
        }
    }

    return head
}