转载

【Java 实现经典算法】六:链表反转

题目来自剑指Offer之十六。

链表结点结构

class ListNode{
    int value;
    ListNode next = null;
    public ListNode(int value){
        this.value = value;
    }
}

题目描述

  • 输入一个链表的头结点,反转该链表并输出翻转后的头结点

代码实现

  • 遍历该链表
  • 保存后一个结点,以防止当前结点的next值更新后链表断开
  • 保存前一个结点,以便当前结点的next值更新为前一个结点
  • 最后一个结点将是反转之后的头结点,保存该结点返回
public static ListNode reverseList(ListNode head) {
    
    ListNode reverseListHead = null;
    ListNode curNode = head;
    ListNode preNode = null;
    ListNode nextNode = null;
    
    while(curNode != null){
        nextNode = curNode.next;
        if(nextNode == null){
            reverseListHead = curNode;
        }
        
        curNode.next = preNode;
        preNode = curNode;
        curNode = nextNode;
        
    }
    
    return reverseListHead;
}

我组建了一个技术交流群,提供免费的每日科技早报服务,里边也会有众多知名互联网企业的技术大佬一起交流学习,共同成长。需要的朋友可以加我微信(微信ID:919201148),我拉你进群,并有福利相送。

【Java 实现经典算法】六:链表反转

关注我的微信公众号,回复“礼包”领取我的学习资料

涵盖自学编程、Java技术、分布式笔记、算法刷题和程序员必读电子书等众多资料合集。

【Java 实现经典算法】六:链表反转

原文  https://segmentfault.com/a/1190000022413818
正文到此结束
Loading...