反轉單鏈表的Java實現
前不久在面試時被問到單鏈表反轉的問題,在那之前從未留意過這方面的問題(我懶得真是隨心所欲啊。。。),毫不意外慌了心神只回答了大概思路。。。後來再次做到這道題時,無限感慨了自己的智商。
得出結論:不如回家種田。。。錯,一定要好好記錄回顧,畢竟我記憶還不好。。。
正題——反轉單鏈表的思路:找到尾結點,從尾結點開始逆轉“指針”指向。
以下是算法實現,一個我拜讀了大神們的實現方法的總結,我可長點兒心吧。。。
/*
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 newHead = ReverseList(head.next);
// 將下一個結點的“指針”逆轉,指向當前頭結點
head.next.next = head;
// 將當前頭結點指向的結點置空完成反轉
head.next = null;
return newHead;
}
}