Java編程實(shí)現(xiàn)從尾到頭打印鏈表代碼實(shí)例
問題描述:輸入一個(gè)鏈表的頭結(jié)點(diǎn),從尾巴到頭反過來打印出每個(gè)結(jié)點(diǎn)的值。
首先定義鏈表結(jié)點(diǎn)
public class ListNode { int val; ListNode next = null; ListNode(int val){ this.val = val; } }
思路1:此題明顯想到是利用棧的思想,后進(jìn)先出,先遍歷鏈表,依次將結(jié)點(diǎn)值進(jìn)棧。最后在遍歷棧出棧。
public static Stack<Integer> printListReverse_Stack(ListNode listNode){ Stack<Integer> stack = new Stack<Integer>(); if(listNode != null){ ListNode p = listNode; while(p != null){ stack.add(p.val); p = p.next; } } return stack; }
思路2:直接遍歷鏈表,按照頭插法依次插入ArrayList即可
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode){//表頭也存儲(chǔ)元素 ArrayList<Integer> print = new ArrayList<Integer>(); if(listNode == null){ return print; } int add = 0; ListNode p = listNode; while(p != null){ print.add(0, p.val); p = p.next; } return print; }
思路3:可以使用遞歸的思想(本質(zhì)也是棧的思想)
public ArrayList<Integer> printListReversely_Recursively(ListNode listNode){ ArrayList<Integer> print = new ArrayList<Integer>(); if(listNode == null){ return print; } print.addAll(printListReversely_Recursively(listNode.next)); print.add(listNode.val); return print; }
總結(jié)
以上就是本文關(guān)于Java編程實(shí)現(xiàn)從尾到頭打印鏈表代碼實(shí)例的全部?jī)?nèi)容,感興趣的朋友可以參閱:用Java打印九九除法表代碼分析、Java程序打印奧林匹克標(biāo)志方法詳解、Java編程用指定字符打印菱形實(shí)例以及本站其他相關(guān)專題,希望對(duì)大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
一文帶你徹底了解Java8中的Lambda,函數(shù)式接口和Stream
這篇文章主要為大家詳細(xì)介紹了解Java8中的Lambda,函數(shù)式接口和Stream的用法和原理,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-08-08IDEA里找不到Maven的有效解決辦法(小白超詳細(xì))
這篇文章主要給大家介紹了關(guān)于IDEA里找不到Maven的有效解決辦法,文中通過圖文將解決的辦法介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07MyBatis-Plus通過version機(jī)制實(shí)現(xiàn)樂觀鎖的思路
version機(jī)制的核心思想就是,假設(shè)發(fā)生并發(fā)沖突的幾率很低,只有當(dāng)更新數(shù)據(jù)的時(shí)候采取檢查是否有沖突,而判斷是否有沖突的依據(jù)就是version的值是否被改變了,這篇文章主要介紹了MyBatis-Plus通過version機(jī)制實(shí)現(xiàn)樂觀鎖的思路,需要的朋友可以參考下2021-09-09Spring @Primary和@Qualifier注解原理解析
這篇文章主要介紹了Spring @Primary和@Qualifier注解原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04JavaSE static final及abstract修飾符實(shí)例解析
這篇文章主要介紹了JavaSE static final及abstract修飾符實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06SpringBoot用JdbcTemplates訪問Mysql實(shí)例代碼
本篇文章主要介紹了SpringBoot用JdbcTemplates訪問Mysql實(shí)例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05java并發(fā)編程專題(五)----詳解(JUC)ReentrantLock
這篇文章主要介紹了java(JUC)ReentrantLock的的相關(guān)資料,文中講解非常詳細(xì),實(shí)例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07