牛客题霸NC78 Java版答案

反转链表

https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=117&&tqId=35000&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking

牛客题霸NC78 Java版答案

题目链接

题目思路以及解释见下面代码的注释

public ListNode ReverseList(ListNode head) {
        if (head == null) return head;
        ListNode pre = head;//上一节点
        ListNode cur = head.next;//当前节点
        ListNode temp;// 临时结点,用于保存当前结点的指针域(即下一结点)
        while (cur != null) {
            temp = cur.next;
            cur.next = pre;// 反转指针域的指向
            // 指针往下移动
            pre = cur;
            cur = temp;
        }
        // 最后将原链表的头节点的指针域置为null,还回新链表的头结点,即原链表的尾结点
        head.next = null;
        return pre;
    }

递归版本实现 见代码注释

public ListNode ReverseList(ListNode head) {
      // head,head.next是当前结点,cur是反转后新链表的头结点
        if (head == null || head.next == null) {
            return head;// 若为空链或者当前结点在尾结点,则直接还回
        }
        ListNode cur = ReverseList(head.next);//先反转后续节点head.getNext() 
        head.next.next = head;//将当前结点的指针域指向前一结点
        head.next = null;//前一结点的指针域令为null
        return cur;//反转后新链表的头结点
    }
全部评论

相关推荐

最近和朋友聊天,她说了句让我震惊的话:"我发现我连周末点外卖都开始'最优解'了,一定要赶在高峰期前下单,不然就觉得自己亏了。"这不就是典型的"班味入侵"吗?工作思维已经渗透到生活的方方面面。
小型域名服务器:啊?我一直都这样啊?我还以为是我爱贪小便宜呢?每次去实验室都得接一杯免费的开水回去,出门都得规划一下最短路径,在宿舍就吃南边的食堂,在实验室就吃北边的食堂,快递只有顺路的时候才取。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务