Description
Reverse a singly linked list.
Example:
| 12
 
 | Input: 1->2->3->4->5->NULLOutput: 5->4->3->2->1->NULL
 
 | 
Follow up:
A linked list can be reversed either iteratively or recursively. Could you implement both?
####思路0
題意是將一個有序鏈錶反轉,首先使用迭代方法來遍歷列表。假設n是列表的長度,時間複雜度為$O(n)$
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 
 | 
 
 
 
 
 
 
 class Solution {
 public ListNode reverseList(ListNode head) {
 ListNode prev = null;
 ListNode curr = head;
 while (curr != null) {
 ListNode nextTemp = curr.next;
 curr.next = prev;
 prev = curr;
 curr = nextTemp;
 }
 return prev;
 }
 }
 
 | 
思路1
首先使用遞歸方法來遍歷列表。假設n是列表的長度,時間複雜度為$O(n)
| 12
 3
 4
 5
 6
 7
 
 | public ListNode reverseList(ListNode head) {if (head == null || head.next == null) return head;
 ListNode p = reverseList(head.next);
 head.next.next = head;
 head.next = null;
 return p;
 }
 
 |