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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容