class Solution {
public ListNode reverseList(ListNode head) {
ListNode temp = null;
ListNode res = null;
while(head != null){
// 3. 缓存结果指针
temp = res;
// 2. 缓存头删指针
res = head;
// 1. 头删
head = head.next;
// 4. 头插
res.next = temp;
}
return res;
}
}
思路 : 首先是1. 头删
,头删之前需要把头结点给到结果指针,这样才能头插 ,于是 2. 缓存头删指针
但是返回指针如果指引到最新的头插节点,那么上次头插的结果会丢失,所以需要先将返回指针指向的节点引用缓存起来 ,于是 3. 缓存结果指针
,最后 4. 头插
将结果指针指向的最新节点 头插到老的 返回头结点上;
评论区