给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2]
输出:[2,1]
示例 3:
输入:head = [ ]
输出:[ ]
提示:
1、链表中节点的数目范围是 [0, 5000]
2、-5000 <= Node.val <= 5000
思路:
将head.next保存到cur,head.next置空,使cur指向head,head=cur,cur向后移,head向后移,直到cur=null
特殊情况:
如果head=null,返回null
如果head.next=null,返回当前head
代码:
class Solution {
public ListNode reverseList(ListNode head) {
if (head==null){
return null;
}
if (head.next==null){
return head;
}
//最起码有两个节点以上
ListNode cur=head.next;
head.next=null;
while (cur!=null){
ListNode curNext=cur.next;
cur.next=head;
head=cur;
cur=curNext;
}
return head;
}
}