題目描述
輸入一個連結清單,反轉連結清單後,輸出新連結清單的表頭。
解題思路
設定三個指針,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;
}
}