[刷题]Reverse Linked List

来源:互联网 发布:网易蜂巢和阿里云 编辑:程序博客网 时间:2024/06/05 00:25

[LintCode]Reverse Linked List

/** * Definition for ListNode. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int val) { *         this.val = val; *         this.next = null; *     } * } */ public class Solution {    /**     * @param head: The head of linked list.     * @return: The new head of reversed linked list.     */    public ListNode reverse(ListNode head) {        // 2015-08-26         if (head == null) {            return head;        }        ListNode dummy = new ListNode(0);        // dummy.next = head; 一定不能有        ListNode temp;        while (head != null) {            //把下一个节点先保存起来            temp = head.next;             // 插入到dummy后面 不要理解为交换位置            head.next = dummy.next;            dummy.next  = head;            // 指向下一节点            head = temp;        }        return dummy.next;    }}

Version 2 注意变量命名

/** * Definition for ListNode. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int val) { *         this.val = val; *         this.next = null; *     } * } */ public class Solution {    /**     * @param head: The head of linked list.     * @return: The new head of reversed linked list.     */    public ListNode reverse(ListNode head) {        // 2016-9-24        if (head == null || head.next == null) {            return head;        }        ListNode node = head;        ListNode preHead = new ListNode(0);        while (node != null) {            ListNode temp = node.next;            node.next = preHead.next;            preHead.next = node;            node = temp;        }        return preHead.next;    }}



0 0