前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每天一道剑指offer-反转链表

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

作者头像
乔戈里
发布2019-09-17 16:10:20
2470
发布2019-09-17 16:10:20
举报
文章被收录于专栏:Java那些事Java那些事

今天的题目 每天的题目见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;
    }
}

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员乔戈里 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 昨天的题解
    • 题目
      • 题目详述
        • 题目详解
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档