image.png

解决思路

初始化3个指针 pre、head、next指针
image.png
将cur的next指针指向pre 然后更新cur、pre、next
image.png
image.png
image.png
继续上面的操作
image.png
一直到cur指针指向null时退出

  1. public ListNode reverseList(ListNode head) {
  2. ListNode pre = null; //pre指针 初始为null
  3. ListNode cur = head; //cur指针 初始指向head
  4. //如果cur不指向null的时候
  5. while(cur!=null){
  6. //保留下一个节点
  7. ListNode next = cur.next;
  8. //顺序不能变
  9. cur.next = pre;//先将当前节点的指针反转
  10. pre = cur; //pre后移
  11. cur = next; //cur后移
  12. }
  13. //最后cur为null pre指向的是反转后的头指针
  14. return pre;
  15. }