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

  • 2019 年 10 月 4 日
  • 笔记

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

昨天的题解

题目

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

题目详述

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

题目详解

思路

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

代码

/*  /*  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;      }  }

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