Reverse a linked list.
For linked list 1->2->3
, the reversed linked list is 3->2->1
Reverse it in-place and in one-pass
SOLUTION:
这题以前先要对着纸画一遍,后来发现,真的很简单,忘了的话就画一下就行了。思路就是,记录一个pre点,一个curr点,还有一个curr.next点(因为翻转了之后这个点就找不到了,所以要先记录一下)然后 curr.next ---->pre, pre一到当前curr上,curr移到curr.next那个地方就行,不断把curr.next指针指到pre上就ok。
代码:
/** * 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) { if (head == null){ return head; } ListNode prev = null; ListNode temp = null; while (head != null){ temp = head.next; head.next = prev; prev = head; head = temp; } return prev; } }
[LintCode] Reverse Linked List
原文:http://www.cnblogs.com/tritritri/p/4971019.html