今天的题目 每天的题目见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;
}
}
代码截图(为了避免代码排版错乱)