美文网首页
用 Kotlin 写算法

用 Kotlin 写算法

作者: 开G的大顺子 | 来源:发表于2018-11-19 20:31 被阅读0次

    天冷了,脑子冻住了,学学算法热热身。
    菜鸟求勘误!

    1.单链表反转

    例如 A -> B-> C-> D-> null 变成 D -> C -> B -> A-> null

        fun reverse(list: Node?): Node? {
            var headNode: Node? = null //记录反转后的头节点
            var previousNode: Node? = null//记录当前节点的前一个节点
            var currentNode = list//当前节点
            while (currentNode != null) {
                val nextNode = currentNode.next //记录当前节点的下一个节点,以免指针丢失,1.开始 currentNode.next 指向 B
                if (nextNode == null) {//说明反转结束
                    headNode = currentNode//将 D 赋值给头指针
                }
                currentNode.next = previousNode//2.到这 currentNode.next 就不指向 B 了
                previousNode = currentNode //记录前一个节点, pre = null --> pre = A
                currentNode = nextNode //记录当前的节点 ,cur = A --> cur = B
            }
            return headNode
        }
    

    步骤讲解(画图软件求推荐):

    • begin : A -> B -> C -> D, head = null 、pre = null 、cur = A
    • 第一轮:(null) <- A 无关联 B -> C -> D, head = null 、pre = A 、cur = B
    • 第二轮:A <- B 无关联 C <- D, head = null 、pre = B 、cur = C
    • 第三轮:A <- B <- C 无关联 D, head = null 、pre = C 、cur = D
    • 第四轮:A <- B <- C <- D, head = D 、pre = D 、 cur = null

    相关文章

      网友评论

          本文标题:用 Kotlin 写算法

          本文链接:https://www.haomeiwen.com/subject/looafqtx.html