首页
学习
活动
专区
圈层
工具
发布

每天一道剑指offer-反转链表

今天的题目 每天的题目见github(看最新的日期): https://github.com/gzc426 具体的题目可以去牛客网对应专题去找。

昨天的题解

题目

每天一道剑指offer-反转链表 来源:牛客网对应专题

题目详述

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

题目详解

思路

  • 先反转第一个节点;
  • 然后后面的依次反转;

代码

代码语言:javascript
复制
/*
/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        if(head == null || head.next == null)
            return head;
        ListNode p = head.next;//p指向头结点的下一个节点
        ListNode pre = head;//p节点的前一个节点pre.
        pre.next = null;//先把第一个节点当做最后一个节点,置位null
        ListNode next = p.next;//然后next记录p的下一个节点
        while(p != null) 
        {
            p.next = pre;//p当前节点指向前一个pre,完成这两个节点的反转
            pre = p;//然后pre往后移动
            p = next;//然后p指向next 这样都开始往后移动了。
            if(p != null)//只要下一个节点不为空,next才可以赋值成下一个节点。
                next = p.next;
        }
        head = pre;
        return head;
    }
}

代码截图(为了避免代码排版错乱

下一篇
举报
领券