Java語言實現反轉鏈表代碼示例
問題描述
定義一個函數,輸入一個鏈表的頭結點,反轉該鏈表并輸出反轉后的鏈表的頭結點。鏈表結點如下:
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
思路1:
要想反轉鏈表,對于結點i,我們要把它的next指向它的前趨,因此我們需要保存前趨結點,同時,如果我們已經把i的next重新賦值,會無法找到i的后繼,因此,在重新賦值之前,我們要保存i的后繼。
代碼:
public ListNode ReverseList(ListNode head) {
if(head == null){
return null;
}
ListNode rHead = null;
ListNode prior = null;//store prior
ListNode q = head;//store current
while(q != null){
ListNode next = q.next;//store the next
if(next == null){
rHead = q;
}
q.next = prior;
prior = q;
q = next;
}
return rHead;
}
思路2:
使用遞歸的思想(暫時沒有想到,因為如果用遞歸的話,每次應該是:鏈表的第一個結點<—遞歸返回的鏈表的尾指針,但是這樣的話就無法獲得反轉后的頭指針了。)后面再思考吧。
總結
以上就是本文關于Java語言實現反轉鏈表代碼示例的全部內容,感興趣的朋友可以參閱:Java編程刪除鏈表中重復的節(jié)點問題解決思路及源碼分享、Java編程實現從尾到頭打印鏈表代碼實例以及本站其他相關專題,希望對大家有所幫助。如有不足之處,歡迎留言指出。
相關文章
ConcurrentHashMap線程安全及實現原理實例解析
這篇文章主要介紹了ConcurrentHashMap線程安全及實現原理實例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11
SpringBoot項目實現日志打印SQL的常用方法(包括SQL語句和參數)
有時候遇到問題需要根據我們編寫的SQL進行分析,但如果不進行一些開發(fā)或者配置的話,這些SQL是不會打印到控制臺的,它們默認是隱藏的。下面給大家介紹幾種常用的方法,感興趣的朋友跟隨小編一起看看吧2024-04-04
關于?Math.random()生成指定范圍內的隨機數的公式推導問題
在 java 中,用于生成隨機數的 Math 方法 random()只能生成 0-1 之間的隨機數,而對于生成指定區(qū)間,例如 a-b 之間的隨機數,卻只能用相關計算公式,今天通過本文給大家介紹Math.random()生成隨機數的公式推導問題,感興趣的朋友一起看看吧2022-09-09
聊聊Java 成員變量賦值和構造方法誰先執(zhí)行的問題
這篇文章主要介紹了聊聊Java 成員變量賦值和構造方法誰先執(zhí)行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

