LeetCode--206. 反转链表

2018-07-30  本文已影响0人  sjandroid

题目

反转一个单链表。
示例:
输入: 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;
    }
上一篇 下一篇

猜你喜欢

热点阅读