反转链表

反转链表

题目:输入一个链表,反转链表后,输出新链表的表头
思路:使用current保存当前的结点,next保存下一结点,pre保存前一结点。
每次现将下一结点用next保存起来,防止链表断裂;
之后进行指针反转,即将current.next指向pre;
后移,将一下个结点进行反转操作。(pre = current;current = next;)
直到current为null,此时pre指向的为反转后链表的头结点

代码实现

public ListNode reverseList(ListNode head){
        if(head ==null)
            return null;
        ListNode current = head;
        ListNode pre = null;
        ListNode next = null;
        while (current != null){
            //next暂时保存下一个结点
            next = current.next;
            //将当前结点的下一个结点指向前一个结点,反转
            current.next = pre;
            //后移
            pre =current;
            current = next;
        }
        //如果head为null的时候,链表已经反转完毕,pre就是反转后链表的第一个节点
        return pre;
    }
全部评论

相关推荐

03-04 19:02
云南大学 Java
Yki_:没挂,只是没人捞,该干啥干啥,等着就好了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务