連結串列反轉非遞迴演算法!看不懂打死我!
演算法使用三個指標實現,每次迴圈將反轉pre和head指向的節點
- pre:指向前一個節點,原頭節點的前一個節點(反轉後最後一個節點的下一個節點)為null,所以初始化pre=null
- head:指向當前節點,head為null時,迴圈結束
- next:儲存head的下一個節點,因為在調整head和pre之間的關係時,
head.next=pre
,所以原head.next需要存起來,不然下次迴圈就找不到了
上程式碼
public static Node reverse(Node head){
Node pre = null;
Node next = null;
while (head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
相關文章
- 反轉連結串列系列題練習遞迴遞迴
- 實現反轉連結串列--遞迴、迭代、雙指標、棧遞迴指標
- 資料結構與演算法——歸併排序: 陣列&連結串列&遞迴&非遞迴解法全家桶資料結構演算法排序陣列遞迴
- 單連結串列逆置遞迴演算法遞迴演算法
- 反轉連結串列
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- #反轉連結串列_C++版 #反轉連結串列_Java版 @FDDLCC++Java
- 利用遞迴方法實現連結串列反轉、前N個節點反轉以及中間部分節點反轉遞迴
- Python實現連結串列反轉的方法【迭代法與遞迴法】Python遞迴
- 每日演算法隨筆:反轉連結串列演算法
- 遞迴演算法轉換為非遞迴演算法的技巧遞迴演算法
- JavaScript從反轉陣列到連結串列反轉JavaScript陣列
- 連結串列-迴圈連結串列
- 遞迴演算法-不帶頭節點的單連結串列遞迴演算法
- Golang從合併連結串列聊遞迴Golang遞迴
- 演算法題:反轉一個單連結串列&判斷連結串列是否有環演算法
- 反轉連結串列、合併連結串列、樹的子結構
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- 【演算法題】反轉連結串列的兩種方法演算法
- java實現連結串列反轉Java
- leetcode 反轉連結串列LeetCode
- TypeScript 實現連結串列反轉TypeScript
- 1025 反轉連結串列
- 【資料結構】遞迴實現連結串列逆序資料結構遞迴
- 連結串列4: 迴圈連結串列
- C++單連結串列遞迴遍歷操作C++遞迴
- 資料結構和演算法——Go實現單連結串列並且反轉單連結串列資料結構演算法Go
- Java資料結構和演算法(六)—演算法—反轉連結串列Java資料結構演算法
- 資料結構之連結串列:206. 反轉連結串列資料結構
- leetcode 92 反轉連結串列ⅡLeetCode
- 面試必備的「反轉連結串列」面試
- 快速排序(遞迴及非遞迴演算法原始碼)排序遞迴演算法原始碼
- 如何在Java中反轉單連結串列?Java
- 反轉連結串列(C++簡單區)C++
- 劍指offer面試16 反轉連結串列面試
- [leetcode 92] 反轉連結串列 IILeetCode
- 漢諾塔非遞迴演算法遞迴演算法
- 遞迴轉非遞迴 棧模擬 Recursive to Non-recursive stack simulated 總結遞迴