1 package algorithms; 2 3 import java.util.ArrayList; 4 import java.util.Stack; 5 6 /** 7 * public class ListNode { 8 * int val; 9 * ListNode next = null; 10 * 11 * ListNode(int val) { 12 * this.val = val; 13 * } 14 * } 15 * 16 */ 17 /* 18 * 題目描述 19 * 輸入一個鏈表,按鏈表值從尾到頭的順序返回一個ArrayList 20 * 21 * 注意 這個跟反轉鏈表不一樣的 22 */ 23 24 25 public class PrintListFromTailToHead { 26 27 public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { 28 ArrayList<Integer> list = new ArrayList<Integer>(); 29 Stack<Integer> s = new Stack<Integer>(); 30 while(listNode!=null) { 31 s.push(listNode.val); 32 listNode = listNode.next; 33 } 34 while(!s.isEmpty()) { 35 list.add(s.pop()); 36 } 37 return list; 38 } 39 }
思路:利用棧的先進后出的特性解決。