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 }
思路:利用栈的先进后出的特性解决。