1. 程式人生 > 其它 >反轉連結串列LeetCode206

反轉連結串列LeetCode206

技術標籤:基礎演算法訓練javaleetcode

反轉連結串列LeetCode206

反轉一個單鏈表
示例:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL

解題方法分為遞迴法和迭代法。
其中遞迴法比較容易理解;

用ListNode設出來的的是節點

思路:藉助三個節點,分別是空指標(作用就是作為一箇中間值,沒有其他意義),另外兩個就是連著的指標,從頭開始走。
注意:他們三個位置是連著的

假設三個節點分別為:0,1, 2, 3
文字描述:
先做排除空值的情況,0是空值,1,2,3都是有值的。將1指向0,然後將1的值賦給0,這時候1指向0,斷開之前的1指向2,原來的一條鏈現在形成兩個單獨的鏈,然後使這三個節點整體向後移動一個單位

在這裡插入圖片描述

繼續剛才的操作,最後全部都會反轉過來,不滿足迴圈條件自己停止,這時候0這個空節點在最前面,列印輸出即可
在這裡插入圖片描述

程式碼實現:

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode dummy = new ListNode();
        ListNode prev = null;
        while( head != null){
        ListNode next = head.next;
            head.next = prev;
            prev = head;
            head= next;
       }
       return prev;
    }
}