反轉連結串列LeetCode206
阿新 • • 發佈:2021-01-31
反轉連結串列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; } }