反转链表
https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnnhm6/
https://leetcode-cn.com/problems/reverse-linked-list/solution/
迭代
迭代进行中需要储存好前一个节点、当前节点、下一节点的指针,以便操作。
 | func reverseList(head *ListNode) *ListNode {     var prev *ListNode     curr := head
      for curr != nil {         next := curr.Next         curr.Next = prev         prev = curr         curr = next
                        }
      return prev }
 
  | 
 
递归
主要在于如何返回反转后的头节点,答案就是记住它(变量 p),然后层层直接返回。
其中递归所需的空间复杂度是 O(n)。
1 2 3 4 5 6 7 8 9 10 11
   | func reverseList(head *ListNode) *ListNode {     if head == nil || head.Next == nil {         return head     }     p := reverseList(head.Next)
      head.Next.Next = head     head.Next = nil
      return p }
 
  |