Clear2 / Algorithm

算法训练
MIT License
0 stars 0 forks source link

合并两个有序链表 #6

Open Clear2 opened 4 years ago

Clear2 commented 4 years ago

因为原始两个链表都是有序的! 所以题目就很简单了

type ListNode struct {
    Value int
    Next *ListNode
}
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
    prehead := &ListNode{}
    prev := prehead

    for l1 != nil && l2 != nil {
        if l1.Value <= l2.Value {
            prev.Next = l1
            l1 = l1.Next
        } else {
            prev.Next = l2
            l2 = l2.Next
        }
        prev = prev.Next
    }
    if l1 == nil {
        prev.Next = l2
    }
    if l2 == nil {
        prev.Next = l1
    }
    return prehead.Next
}
Clear2 commented 4 years ago

测试代码

func main() {
    node1 := new(ListNode)
    node1.Value = 1
    node2 := new(ListNode)
    node2.Value = 2
    node3 := new(ListNode)
    node3.Value = 4
    node1.Next = node2
    node2.Next = node3

    node4 := new(ListNode)
    node4.Value = 1
    node5 := new(ListNode)
    node5.Value = 3
    node6 := new(ListNode)
    node6.Value = 4
    node4.Next = node5
    node5.Next = node6

    node7 := mergeTwoLists(node1, node4)
    PrintNode(node7)

}