美文网首页
用 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