劍指offer第3題:從尾到頭打印鏈表
阿新 • • 發佈:2017-12-04
off 輸出結果 pre col 結構 ava image stack 鏈表
方法一:采用棧來存儲,用ArrayList保存。註意題目給出的輸出結果是ArrayList
import java.util.ArrayList; import java.util.Stack; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Stack<Integer> stack=new Stack<>(); ArrayList<Integer> arrayList=new ArrayList<>(); while (listNode!=null){ stack.push(listNode.val); listNode=listNode.next; } while (!stack.isEmpty()){ arrayList.add(stack.pop()); } return arrayList; } } class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }
方法二: 遞歸在本質上是一個棧結構,於是很自然的想到了用遞歸來實現。註意 ArrayList的創建要在函數的外面,不然每次又去重新創建了該對象,導致最後只有一個元素。static加上去出錯,至於原因我還要再看一下。
import java.util.ArrayList; public class Solution { ArrayList<Integer> arrayList=new ArrayList<>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {if(listNode!=null){ if(listNode.next!=null){ printListFromTailToHead(listNode.next); } arrayList.add(listNode.val); } return arrayList; } }
加入在前面加入static之後的結果:在IDE裏面是可以跑通的,另外,把static的變量放入方法裏面是會有語法錯誤的(Java有,c、c++沒有錯誤)
劍指offer第3題:從尾到頭打印鏈表