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
} 
京公网安备 11010502036488号