1. 程式人生 > 實用技巧 >劍指15.反轉連結串列

劍指15.反轉連結串列

題目描述

輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。

思路

為了反轉一個連結串列,需要調整連結串列中指標的方向。當調整節點 i 的指標指向時,需要知道節點 i 本身,還需要知道 i 的前一個節點 h,因為我們需要把節點 i 的指標指向節點 h 。同時,我們還需要提前儲存 i 原來的下一個節點 j ,以防止連結串列斷開。因此,需要3個指標,分別指向當前遍歷到的節點,它的前一個節點以及後一個節點。

程式碼實現

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/ public class Solution { public ListNode ReverseList(ListNode head) { if(head == null || head.next == null) return head; ListNode pre = null;//注意要考慮到第一個節點,讓它指向null ListNode next = null; while(head != null){ next = head.next; //先記錄一下當前節點的下一個節點,以防斷開找不到下一個節點
head.next = pre; pre = head; head = next; } return pre; } }