美文网首页
LeetCode--206. 反转链表

LeetCode--206. 反转链表

作者: sjandroid | 来源:发表于2018-07-30 17:42 被阅读0次

    题目

    反转一个单链表。
    示例:
    输入: 1->2->3->4->5->NULL
    输出: 5->4->3->2->1->NULL


    实现

    非递归

        public static ListNode reverseList(ListNode head) {
            ListNode reverseHead = null;
    
            //遍历节点,用于移动链表的
            ListNode temp = head;
    
            //翻转后,用于记录当前节点的前一个节点
            ListNode pre = null;
    
            while(temp != null){
                //移动到最后一个节点时,此时该节点就是翻转后的头节点
                if(temp != null && temp.next == null){
                    reverseHead = temp;
                }
    
                //当前节点的下一个节点
                ListNode actualNext = temp.next;
    
                //使当前节点的next指针指向pre节点(这才会进行实际的翻转操作)
                temp.next = pre;
                //给pre节点赋值(把当前节点赋值给pre,当下次循环进来时,使当前节点的next指针指向pre节点)
                pre = temp;
    
                //移动到下一个节点
                temp = actualNext;
            }
    
            return reverseHead;
        }
    

    相关文章

      网友评论

          本文标题:LeetCode--206. 反转链表

          本文链接:https://www.haomeiwen.com/subject/nxofvftx.html