给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2] 输出:[2,1]
示例 3:
输入:head = [] 输出:[]
采用3指针方法:
在head 还有hard前边和后边各创建一个指针
head前用来存储 反转后的方向, head后边用来存储原链表。
代码:
public ListNode reverseList(ListNode head) {
ListNode preNode = null;
ListNode curr = head;
ListNode next = null;
while(curr!=null){
next = curr.next;
curr.next = preNode;
preNode = curr;
// 此时的curr 已经变了 所以不能直接用curr.next
curr = next;
}
return preNode;
}