思路一 改变指针方向
主体思路 : 遍历所有节点, 改变节点的指向方向
- 初始状态 : last 指向 null, head 指向头结点
- 定义一个 nextHead 节点, 用于存储 head.next 的节点, 否则方向一改变, head.next 节点就丢失了
- 然后改变 head的边的方向 , head.next = last
- last 和 head 向前移动一步
- 然后循环上述过程即可
class Solution {
public ListNode reverseList(ListNode head) {
ListNode last = null;
while(head != null) {
// 保存head.next , 原因是 边的方向改变时, head.next 的节点会丢失, 所以要提前保存
ListNode nextHead = head.next;
// 改变边的方向
head.next = last;
// last 和 head 向前移动一步
last = head;
head = nextHead;
}
return last;
}
}