美文网首页
Java实现单链表翻转

Java实现单链表翻转

作者: 1ff5a98e5398 | 来源:发表于2019-01-06 14:49 被阅读23次

解题思想

首先,拿到一个链表头结点now,(可以理解为当前指针所在位置)

然后定义链表翻转后的头结点pre=null;

循环的条件是链表的头结点不为空,如果为空则返回pre=null。
核心思想是,先把当前节点(now)的next用临时变量(next)保存起来,然后当前节点的next(即now.next)指向pre,然后pre指向当前节点,即(pre=now),然后now往下走一步。完成此步奏后,链表的状态变为0的next指向null,1的next执行2.

单链表翻转过程
继续循环,
image
直到最终now==null结束循环,单链表完成逆转

结构定义

public static class Node {

        int data;

        Node next;

    }

public static class LinkList {

        Node head;
    }

初始化

/**
     * 初始化
     *
     * @return
     */
    public static LinkList init() {
        LinkList linkList = new LinkList();
        linkList.head = new Node();
        // 记住头结点
        Node h = linkList.head;
        for (int i = 0; i < 10; i++) {
            linkList.head.data = i;
            // 不初始化尾节点
            if (i < 9) {
                linkList.head.next = new Node();
                linkList.head = linkList.head.next;
            }
        }
        linkList.head = h;
        return linkList;
    }

翻转

public static Node reverse(Node now) {
        Node pre = null;
        while (now != null) {
            Node next = now.next;
            now.next = pre;
            pre = now;
            now = next;
        }

        return pre;
    }

思想总结

定义pre为翻转后的头结点==null,now为当前节点。如果now不为空,开始循环,循环内容为
临时保存下一个节点
Node temp = now.next;
当前节点的next指向pre
now.next=pre;
pre和now都往下走一步
pre=now;
now=next;
开始下一轮循环。

相关文章

  • Java实现单链表翻转

    解题思想 首先,拿到一个链表头结点now,(可以理解为当前指针所在位置)然后定义链表翻转后的头结点pre=null...

  • 链表

    单链表 C实现 Java实现 双链表 C实现 Java实现

  • 单向链表反转(含图解)

    前言 上次讲解了单向链表的原理《Java实现单向链表功能》,今天拓展一下实现链表的翻转。下面直接上代码。 链表初始...

  • ARTS 打卡 2019-04-26

    Algorithm 单链表翻转 lru 实现https://github.com/jinjiaji512/Leet...

  • LeetCode25 K个一组翻转链表(Java实现)

    LeetCode25 K个一组翻转链表(Java实现) 题目描述: 代码:

  • 翻转单链表

    翻转单链表 方法一:将单链表头插到一个新链表中 浪费空间,不过简单 方法二:使用三个指针遍历单链表,逐个点进行翻转...

  • 单链表反转的递归方法和非递归方法

    链表的节点可以定义为: 测试的输入数据,每次使用root作为方法的入参 使用循环来翻转单链表 思路 翻转单链表,其...

  • 数据结构 | 其二 链表

    冰河winner - 数据结构之链表 2.1 单向链表 数据结构(一) 单链表的实现-JAVA 2.2 双端链表 ...

  • 链表的操作和算法相关

    github->demo1、创建(单链表、双链表、循环链表)2、翻转单链表(递归和非递归)3、判断链表是否存在环。...

  • 单向链表实现翻转

    使用Java实现单向链表的翻转 先判断,如果为空链表或者只有一个节点的链表,不需要处理,直接返回。然后,声明当前节...

网友评论

      本文标题:Java实现单链表翻转

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