题解 | #反转链表#

反转链表

https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null){ //先判断链表为空的情况
return null;
}

    //ListNode pre = head;         // 这行没用
    ListNode cur = head.next;   //先保存头节点的后面一个节点
   // ListNode tmp = cur.next;   // 再保存头节点的后面一个节点的next域
    head.next = null;     //把头结点的next域置为空,因为反转链表后,头节点就成了最后一个节点,最后一个节点的next域为空【此时可以理解为头节点已经完成反转】
    while(cur != null){   //进入反转
          ListNode tmp = cur.next;  //先保存cur的next域,防止断开联系
        cur.next = head; //改变cur的指向【此时cur已经完成了反转】
        head = cur; //让head到cur位置,为下一次循环反转做准备
        cur = tmp; //目的同上
    }

    return head;
}

}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务