美文网首页
算法(15)翻转链表

算法(15)翻转链表

作者: 猪_队友 | 来源:发表于2018-11-08 16:58 被阅读8次

题目描述

输入一个链表,反转链表后,输出新链表的表头。

思路:
就是把原节点的next节点当做头结点,然后将头结点的next指向原节点,其实就是互换一下,依次进行,知道把最后一个节点转换成了头结点。

新建一个空节点,命名为preNode,然后将pNode节点(原节点)的next节点指向这个前节点,然后将我们自身的地址给这个前节点,我们自身节点往后移动,原来的pNode.next 地址指向了pNode,这就是将原来的pNode和pNextNode变成了现在的preNode和pNode,其实双方已经换位,就连指向也完全相反了。

学习过C的同学更能理解这个,结合图片,应该就不难理解了。

  public ListNode ReverseList(ListNode head) {
        if (head == null)
            return null;

        ListNode newHead = null;
        ListNode preNode = null;
        ListNode pNode = head;

        while ((pNode != null)) {

            ListNode pNextNode = pNode.next;
            if (pNextNode == null) {
                newHead = pNode;
            }
            pNode.next = preNode;
            preNode = pNode;
            pNode = pNextNode;

        }
        return newHead;
    }

相关文章

  • 算法(15)翻转链表

    题目描述 输入一个链表,反转链表后,输出新链表的表头。 思路:就是把原节点的next节点当做头结点,然后将头结点的...

  • 翻转链表算法

    翻转链表的方法有很多,如果是逆序输出链表,并且链表不是特别长的情况可以考虑直接用递归,以压栈的形式输出,然而,很多...

  • 【算法】翻转链表

    假设链表为 1→2→3→∅,我们想要把它改成∅←1←2←3。 在遍历链表时,将当前节点的指针改为指向前一个节点。由...

  • ARTS 20201208-1215

    Algorithm: 每周至少做一个 LeetCode 的算法题算法题:1 剑指 offer 24: 翻转链表递归...

  • 算法题面试复习

    算法模块 1. 链表 1. 链表翻转 2. 单链表判断是不是环+求环位置+求环长度 以图片为例,假设环入口距离链表...

  • 算法(5)- 链表一【翻转链表】

    说在前面: 1、链表不支持随机的访问元素,需从头一次遍历到要访问的节点。2、思路(1)设立头结点。(2)借助辅助指...

  • 54.算法->k个一组翻转链表

    day6:算法-> 25. K 个一组翻转链表[https://leetcode-cn.com/problems/...

  • 牛客网高频算法题系列-BM3-链表中的节点每k个一组翻转

    牛客网高频算法题系列-BM3-链表中的节点每k个一组翻转 题目描述 将给出的链表中的节点每 k 个一组翻转,返回翻...

  • 翻转链表

    翻转链表 描述翻转一个链表 样例给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->nul...

  • 25. K 个一组翻转链表

    K个一组反转链表 翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它...

网友评论

      本文标题:算法(15)翻转链表

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