美文网首页
链表leecode-链表反转

链表leecode-链表反转

作者: 大海鱼吧 | 来源:发表于2022-05-16 18:01 被阅读0次

对于初学者可以先查看这篇文章

[链表简介] https://www.jianshu.com/p/77094acaa897

一.介绍

链表反转顾名思义就是调换链表的顺序,例如1->2->3->4->null 反转后的链表为 4->3->2->1->null


二.题解

这道题的解法很多,例如可以通过遍历链表,将数据插入栈然后遍历构建新的链表,但这种方式会借助额外的空间,本次只讲解通过变换指针的方式来实现,这种方式也是这道题的考察要点,废话不说,直接开始。

首先我们大部分人一定都知道三个数如何调换顺序,见图1所示:


图1

而这里的链表反转也是借助了这种思想,只是这里替换为每3个节点的替换,具体的见图2所示:

图2
三.java代码
public class LinkListReverse {

    public static void Traverse_recursive(ListNode head){
        while (head!=null){
            System.out.println(head.val);
            head = head.next;
        }
    }

    public static void main(String[] args) {
        ListNode head = new ListNode(1,new ListNode(2,new ListNode(3,new ListNode(4,new ListNode(5)))));
        System.out.println("翻转前");
        Traverse_recursive(head);
        ListNode l = Reverse(head);
        System.out.println("翻转后");
        Traverse_recursive(l);
    }

    public static ListNode Reverse(ListNode head){
        ListNode pre = null;
        ListNode cur = head;
        while (cur != null){
            ListNode tmp = cur.next;
            cur.next = pre;
            pre = cur;
            cur = tmp;
        }
        return pre;
    }
}

相关文章

网友评论

      本文标题:链表leecode-链表反转

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