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