题解 | #反转链表#

反转链表

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

大致思路

work指针指向当前即将成为头结点的指针,然后让p指向该节点的next(注意,该节点只是即将成为头结点,而不是已经成为头结点)
当work插到头了之后,让head指向该节点(即head一直指向新链表的表头),此时p指向着原链表的剩余链表的头位置,然后又让work指向p,p指向work的next,继续处理work,循环直至work为空,最后返回head。

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode work = head.next;
        head.next = null;
        ListNode p;
        while (work != null) {
            p = work.next;
            work.next = head;
            head = work;
            work = p;
            if (work != null) {
                p = work.next;
            }
        }
        return head;
    }
}
全部评论

相关推荐

看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗? 那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
点赞 评论 收藏
分享
程序员小白条:找的太晚,别人都是大三实习,然后大四秋招春招的,你大四下了才去实习,晚1年
点赞 评论 收藏
分享
05-29 09:02
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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