天天看點

[劍指offer] 反轉連結清單

題目描述

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

解題思路

設定三個指針,head為目前節點,pre為目前節點的前一個節點,next為目前節點的下一個節點,需要pre和next的目的是讓目前節點從

pre->head->next1->next2

變成

pre<-head next1->next2

的過程中,用pre讓節點反轉所指方向,next節點儲存next1節點防止連結清單斷開

需要注意的點:

1、如果輸入的頭結點是null,則傳回null

2、連結清單斷裂的考慮

參考代碼

/*
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)
            return null;
        ListNode pre = null;
        ListNode next = null;
        
        while(head != null){
            next = head.next;
            head.next = pre;
            pre = head;
            head = next;
        }
        return pre;
    }
}
           

繼續閱讀