输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

 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 }

思路:利用栈的先进后出的特性解决。

原文地址:https://www.cnblogs.com/ustc-anmin/p/10606385.html