实现过程
思路
- 思路:要定义pre和tmp两个辅助节点 都置为空
- 当cur非空的时候,使用tmp来保存cur.next,即让tmp保存cur后面的位置
- 然后将cur.next指向pre,此时已经将链表翻转了一步
- 执行pre = cur 将 cur = tmp 实现了向后连续操作
- 二刷 :最后返回的时候,不能返回cur,因为cur在while结束的时候,已经指向null了,应该返回的是,pre,因为pre在cur的前面。
class Solution {
public ListNode reverseList(ListNode head) {
ListNode tmp = null;
ListNode pre = null;
ListNode cur = head;
while(cur != null){
//使用tmp保存cur后面的位置
tmp = cur.next;
//让cur指向pre
cur.next = pre;
//将pre向后移动到cur上
pre = cur;
//cur向后移动到tmp上
cur = tmp;
}
return pre;
}
}