用 Kotlin 写算法

2018-11-19  本文已影响0人  开G的大顺子

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

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
    }

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

上一篇 下一篇

猜你喜欢

热点阅读