Swift-合并两个排序的链表

题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是按照递增排序的.
代码:

    func mergeSortList(head:ListNode?,nextHead:ListNode?) -> ListNode? {
        if  head == nil {
            return nextHead
        }
        
        if nextHead == nil {
            return head
        }
        
        var mergeHead:ListNode?
        
        if (head?.value)! < (nextHead?.value)! {
            mergeHead = head
            mergeHead?.next = mergeSortList(head: head?.next, nextHead: nextHead)
        } else {
            mergeHead = nextHead
            mergeHead?.next = mergeSortList(head: nextHead?.next, nextHead: head)
        }
        
        return mergeHead
    }

测试:

var mergeHeadNode:ListNode?
var mergeHead1:ListNode?
searchNode.createList(&mergeHeadNode, data: 1)
mergeHead1 = mergeHeadNode

searchNode.createList(&mergeHeadNode, data: 3)
searchNode.createList(&mergeHeadNode, data: 5)
searchNode.createList(&mergeHeadNode, data: 7)

var mergeHeadNode2:ListNode?
var mergeHead2:ListNode?
searchNode.createList(&mergeHeadNode2, data: 2)
mergeHead2 = mergeHeadNode2

searchNode.createList(&mergeHeadNode2, data: 4)
searchNode.createList(&mergeHeadNode2, data: 6)
searchNode.createList(&mergeHeadNode2, data: 8)

searchNode.printList(mergeHead1)
searchNode.printList(mergeHead2)

var mergeResultNode:ListNode? = searchNode.mergeSortList(head: mergeHead1, nextHead: mergeHead2)
searchNode.printList(mergeResultNode)

你可能感兴趣的:(Swift-合并两个排序的链表)