题目
思路
根据题目要求,即将上方链表变成下方所示的链表:
1.要实现引用的指向反向,需要创建两个结点,记为prev和cur;
2.在遍历的过程中始终保持prev为cur的前驱节点(即先让prev指向cur再让cur向后遍历);
3.当最后cur和cur.next均=null时,此时的prev即为头结点。
完整代码
class Solution {
public ListNode reverseList(ListNode head) {
ListNode cur = head;
ListNode prev = null; //保证prev始终是cur的前驱节点
while(cur != null){
ListNode next = cur.next; //因为多次使用到cur.next因此初见新的结点保存
cur.next = prev; //改变“箭头”即引用的指向
prev =cur; //prev同时向后移动
cur = next; //cur不断向后遍历
}
return prev;
}
}