牛客题霸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;//反转后新链表的头结点
    }
全部评论

相关推荐

强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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