/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
//思路:两个节点两个节点依次从前到后反转断开遍历,1>2>3>4>5
//第一次遍历后是: 1<2 3>4>5 两个链表
//第二次遍历是: 1<2<3 4>5
//最后: 1<2<3<4<5 头结点指向5 OK
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head==null) return null;
if(head.next==null) return head;
ListNode pre=null,next=null;
while(head!=null){
//保存下一次的节点
next=head.next;
//让head指向前一次的pre
head.next=pre;
//pre后移
pre=head;
//head重新指向要反转的节点
head=next;
}
return pre;
}
}