题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是按照递增排序的.
代码:
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)