题意:给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
用temp保存cur下一跳的节点以防cur过不去,cur的后继翻转来实现反转,pre再跟进cur为下一次cur的后继反转做准备,cur最后跳到temp之前保存的下个节点。
class Solution {
public ListNode reverseList(ListNode head) {
//定义前,当前,临时
ListNode prev = null;
ListNode cur = head;
ListNode temp = null;
//cur遍历
while (cur != null) {
//temp防止cur无法过河
temp = cur.next;
//cur后继指向前(指针的反转)
cur.next = prev;
//prev++
prev = cur;
//cur跳到提前保存的temp地址
cur = temp;
}
//prev此时在链表末尾做头
return prev;
}
}