美文网首页R7的算法
单向链表反转

单向链表反转

作者: R7_Perfect | 来源:发表于2020-01-02 17:46 被阅读0次

先定义单向链表结构

class ListNode (val id : Int) {
        var next: ListNode? = null
    }

假如有一个单向链表:
1->2->3->4->null
反转步骤如下

1->null
2->3->4->null
2->1->null
3->4->null
3->2->1->null
4->null
4->3->2->1->null

实现代码:

fun reverseList(_head: ListNode?): ListNode? {
        var head = _head
        var next: ListNode? = null
        var pre: ListNode? = null

        while (head != null) {
            next = head.next
            head.next = pre
            pre = head
            head = next
        }
        return pre
    }

先将下一个节点保存起来。
next = head.next

处理当前节点的next指针,指向之前保存的pre
head.next = pre

保存当前节点为pre,给下一个使用
pre = head

准备处理当前节点的下一个节点
head = next

完整测试代码:

object Solution {
    fun reverseList(_head: ListNode?): ListNode? {
        var head = _head
        var next: ListNode? = null
        var pre: ListNode? = null

        while (head != null) {
            next = head.next
            head.next = pre
            pre = head
            head = next
        }
        return pre
    }

    @JvmStatic
    fun main(args: Array<String>) {
        val n1 = ListNode(1)
        val n2 = ListNode(2)
        val n3 = ListNode(3)
        val n4 = ListNode(4)
        n1.next = n2
        n2.next = n3
        n3.next = n4
        reverseList(n1)
    }
}

data class ListNode (var `val`: Int) {
    var next: ListNode? = null
}

相关文章

  • 数据结构 - 单向链表及相关算法

    单向链表 链表常见算法 链表反转

  • reverse linked list

    反转单向链表 demo 运行效果

  • 数据结构专题:1.单向链表反转与排序

    有如下单向链表 1.单向链表反转,递归 递归的方式其实是从尾节点开始进行指针反转,最终递归反转到头节点 2.单向链...

  • 单向链表算法

    单向链表 反转单向链表 单链表查找倒数第k个节点 单链表递归倒序打印 单链表排序 单链表删除重复节点

  • 数据结构-链表

    相关掌握点 单向链表 双向链表 反转单向链表 判断链表是否含有环 链表构建 链表是一种线性结构,是通过指针引用节点...

  • 单向链表-链表反转

    最近在并行复习数据结构与算法的知识,为了加强掌握,就把做题思路用画图的方式记录下来。今天是第一篇,常见的问题:链表...

  • 链表 - 单向链表反转

    反转一个单链表。输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL 图解...

  • 链表常见问题

    反转单向链表思路使用一个临时节点当做缓冲节点,通过绕圈完成反转 反转部分链表题:给定一个链表,及反转的范围,完成反...

  • 单向链表反转

    https://blog.csdn.net/blioo/article/details/62050967

  • 反转单向链表

    单向链表的反转是一个非常常见的链表类面试题,我在刷leetcode的过程中,发现了有许多链表题目的解法,都是以反转...

网友评论

    本文标题:单向链表反转

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