力扣题目:
LeetCode题目源地址:https://leetcode-cn.com/problems/merge-two-sorted-lists/
首先我们定义一个头结点,遍历链表,将头结点的 Next 字段指向较小的那个链表的节点,然后头结点后移一位,再次遍历链表,将头结点的 Next 字段指向较小的那个链表的节点。。。如此循环,直至两个链表中有 nil 出现,说明有链表遍历结束,剩下的链表如果不为空则可以直接拼接在新链表后面,因为剩下的链表元素肯定大于新链表。
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
head := &ListNode{}
result := head
for l1 != nil && l2 != nil {
if l1.Val < l2.Val {
head.Next = l1
l1 = l1.Next
} else {
head.Next = l2
l2 = l2.Next
}
head = head.Next
}
if l1 != nil {
head.Next = l1
}
if l2 != nil {
head.Next = l2
}
return result.Next
}