链表的反转

question:输入一个链表,反转链表后,输出新链表的表头。

resolution:

  public ListNode ReverseList(ListNode head) {
        ListNode pre = null;//上一跳
        ListNode sub = null;//下一跳

        while (head != null){
            sub = head.next;
            //更改指针的指向(开始反转) 这里不能写成pre = head.next 这样的话相当于将sub赋值给了pre
            head.next = pre;
            //head开始后移的时候,将head赋值给pre,将sub赋值给head
            pre = head;
            head = sub;
        }

        return pre;//这里返回的是pre,而不是head

    }

总结:关键在于如何调整指针的走向,也就是如何进行反转。进一步也就是需要注意要保存好当前head的下一跳以及通过head.next = pre来调整指针的走向,同时还要记住将当前head赋值给pre,然后将sub赋值给head实现指针的移动。

posted @ 2019-01-24 16:16  crr121  阅读(122)  评论(0编辑  收藏  举报