Reverse Linked List
Reverse a singly linked list.
提示 | 解題應用 |
---|---|
LinkedList | Pointer |
Default:
|
|
解答思路:
僅需要一次的遍歷就可以同時反轉整個LinkedList,想好每一個操作的流程就可以很輕易的完成,只是要記得在將節點的位置移動到下一個之前,要先記錄前一個節點的位置,以繼續將其目標再指向更前方。
程式碼解說:
這邊我以flag來記錄目前正在處理的節點,以方便我們將整個節點移動到下一個時,能繼續將前一個節點的目標再往前指向,而preNode就是其所指向的位置,既然是反轉LinkedList,那麼原本第一個節點會成為最後一個,而最後一個節點的下一個自然就是空節點nil,而flag指定完畢往下移動後,自然preNode也就跟著往下移變到flag的位置,最後處理完最後一個節點時,回傳當下處理的節點位置,也就是原本最後一個的節點變成第一個節點且處理完畢的flag
|
|
完整程式碼:
|
|
總結:
如果要反轉一個LinkedList,記得在將節點的位置移動到下一個之前,要先記錄前一個節點的位置,以繼續將其目標再指向更前方。