题目描述
输入一个链表,反转链表后,输出新链表的表头。
分析:
若链表为空或长度为1,直接返回。按下图所示,用p1、p2分别指向前两个结点,用p3记录p2的下一个结点,依次反转之后,再将p1、p2移到原来p2、p3的位置,直到p2为null为止,最后返回p1
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null || head.next == null){
return head;
}
ListNode p1 = head;
ListNode p2 = head.next;
p1.next = null;
while(p2 != null){
ListNode p3 = p2.next;
p2.next = p1;
p1 = p2;
p2 = p3;
}
return p1;
}
}